external/liblangtag/UnpackedTarball_langtag.mk |    3 +++
 external/liblangtag/liblangtag-leak.patch.0    |   10 ++++++++++
 i18nlangtag/source/languagetag/languagetag.cxx |    6 +++++-
 3 files changed, 18 insertions(+), 1 deletion(-)

New commits:
commit 0fe40023df5d28a46bea5632835f65e11e1954c0
Author: Stephan Bergmann <sberg...@redhat.com>
Date:   Mon May 26 14:25:58 2014 +0200

    Fix refcounting
    
    Change-Id: I2225b2a2dc0648ec3b9e2af251cd1a3502199383

diff --git a/i18nlangtag/source/languagetag/languagetag.cxx 
b/i18nlangtag/source/languagetag/languagetag.cxx
index 8a96bde..483cf98 100644
--- a/i18nlangtag/source/languagetag/languagetag.cxx
+++ b/i18nlangtag/source/languagetag/languagetag.cxx
@@ -429,8 +429,10 @@ LanguageTagImpl& LanguageTagImpl::operator=( const 
LanguageTagImpl & rLanguageTa
     maCachedScript      = rLanguageTagImpl.maCachedScript;
     maCachedCountry     = rLanguageTagImpl.maCachedCountry;
     maCachedVariants    = rLanguageTagImpl.maCachedVariants;
+    lt_tag_t * oldTag = mpImplLangtag;
     mpImplLangtag       = rLanguageTagImpl.mpImplLangtag ?
                             lt_tag_copy( rLanguageTagImpl.mpImplLangtag) : 
NULL;
+    lt_tag_unref(oldTag);
     mnLangID            = rLanguageTagImpl.mnLangID;
     meIsValid           = rLanguageTagImpl.meIsValid;
     meIsIsoLocale       = rLanguageTagImpl.meIsIsoLocale;
@@ -444,8 +446,10 @@ LanguageTagImpl& LanguageTagImpl::operator=( const 
LanguageTagImpl & rLanguageTa
     mbCachedScript      = rLanguageTagImpl.mbCachedScript;
     mbCachedCountry     = rLanguageTagImpl.mbCachedCountry;
     mbCachedVariants    = rLanguageTagImpl.mbCachedVariants;
-    if (mpImplLangtag)
+    if (mpImplLangtag && !oldTag)
         theDataRef::get().incRef();
+    else if (!mpImplLangtag && oldTag)
+        theDataRef::get().decRef();
     return *this;
 }
 
commit f5d90767d199baeaf61706ecd52f29a34f96b62c
Author: Stephan Bergmann <sberg...@redhat.com>
Date:   Mon May 26 14:25:26 2014 +0200

    external/liblangtag: Fix memory leak
    
    Change-Id: I7d58c1aad5ec21f14569caedbada56cc31a5ff99

diff --git a/external/liblangtag/UnpackedTarball_langtag.mk 
b/external/liblangtag/UnpackedTarball_langtag.mk
index 90068cb..2951368 100644
--- a/external/liblangtag/UnpackedTarball_langtag.mk
+++ b/external/liblangtag/UnpackedTarball_langtag.mk
@@ -15,6 +15,8 @@ $(eval $(call gb_UnpackedTarball_set_pre_action,langtag,\
        $(GNUTAR) -x -j -f 
$(gb_UnpackedTarget_TARFILE_LOCATION)/$(LANGTAGREG_TARBALL) \
 ))
 
+# external/liblangtag/liblangtag-leak.patch.0 upstream:
+#  <https://bitbucket.org/tagoh/liblangtag/pull-request/8/fix-memory-leak/diff>
 $(eval $(call gb_UnpackedTarball_add_patches,langtag,\
        external/liblangtag/liblangtag-0.5.1-msvc-warning.patch \
        external/liblangtag/liblangtag-0.5.1-vsnprintf.patch \
@@ -27,6 +29,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,langtag,\
        
external/liblangtag/liblangtag-0.5.1-windows-do-not-prepend-dir-separator.patch 
\
        external/liblangtag/liblangtag-0.5.1-unistd.patch \
        
external/liblangtag/liblangtag-0.5.1-include-last-record-in-language-subtag-registry.patch
 \
+       external/liblangtag/liblangtag-leak.patch.0 \
 ))
 
 ifeq ($(OS),WNT)
diff --git a/external/liblangtag/liblangtag-leak.patch.0 
b/external/liblangtag/liblangtag-leak.patch.0
new file mode 100644
index 0000000..4a74d68
--- /dev/null
+++ b/external/liblangtag/liblangtag-leak.patch.0
@@ -0,0 +1,10 @@
+--- liblangtag/lt-tag.c
++++ liblangtag/lt-tag.c
+@@ -1408,6 +1408,7 @@
+                                                         
lt_variant_ref(lt_list_value(l)),
+                                                         
(lt_destroy_func_t)lt_variant_unref);
+               }
++              lt_mem_add_ref(&retval->parent, retval->variants, lt_list_free);
+       }
+       if (tag->extension) {
+               lt_tag_set_extension(retval, lt_extension_copy(tag->extension));
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to