Hello community,

here is the log from the commit of package gtkwave for openSUSE:Factory checked 
in at 2014-11-26 20:55:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gtkwave (Old)
 and      /work/SRC/openSUSE:Factory/.gtkwave.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gtkwave"

Changes:
--------
--- /work/SRC/openSUSE:Factory/gtkwave/gtkwave.changes  2014-11-10 
17:28:54.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.gtkwave.new/gtkwave.changes     2014-11-26 
22:57:01.000000000 +0100
@@ -1,0 +2,6 @@
+Wed Nov 26 13:38:45 UTC 2014 - dmitr...@opensuse.org
+
+- Update to version 3.3.64
+  * bugfix release, see included ChangeLog file for details
+
+-------------------------------------------------------------------

Old:
----
  gtkwave-3.3.63.tar.gz

New:
----
  gtkwave-3.3.64.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gtkwave.spec ++++++
--- /var/tmp/diff_new_pack.5NGV4r/_old  2014-11-26 22:57:02.000000000 +0100
+++ /var/tmp/diff_new_pack.5NGV4r/_new  2014-11-26 22:57:02.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           gtkwave
-Version:        3.3.63
+Version:        3.3.64
 Release:        0
 Summary:        Waveform viewer for Ditital Signals
 License:        GPL-2.0+

++++++ gtkwave-3.3.63.tar.gz -> gtkwave-3.3.64.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.63/ChangeLog new/gtkwave-3.3.64/ChangeLog
--- old/gtkwave-3.3.63/ChangeLog        2014-11-07 01:41:05.000000000 +0100
+++ new/gtkwave-3.3.64/ChangeLog        2014-11-26 03:23:11.000000000 +0100
@@ -1489,3 +1489,8 @@
                on a mouse) if shift pressed.
                Timescale fix for Verilator where it emits 0ps as a timescale.
                Added sample gtkwave.appdata.xml file in share/appdata.
+3.3.64 25nov14 Fix to FileChooser to prevent requester from blocking on asking
+               for a directory if a dumpfile is loaded without some amount of
+               absolute/relative pathname.
+               Updated LZ4 for version r124.
+               Fix for x-windows OSX compiles.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.63/LICENSE.TXT 
new/gtkwave-3.3.64/LICENSE.TXT
--- old/gtkwave-3.3.63/LICENSE.TXT      2014-09-03 18:14:43.000000000 +0200
+++ new/gtkwave-3.3.64/LICENSE.TXT      2014-11-26 03:24:39.000000000 +0100
@@ -1,6 +1,6 @@
 ##########################################################################
 
-GTKWave 3.3.63 Wave Viewer is Copyright (C) 1999-2014 Tony Bybell.  
+GTKWave 3.3.64 Wave Viewer is Copyright (C) 1999-2014 Tony Bybell.  
 Portions of GTKWave are Copyright (C) 1999-2014 Udi Finkelstein. 
 Context support is Copyright (C) 2007-2014 Kermin Elliott Fleming.
 Trace group support is  Copyright (C) 2009-2014 Donald Baltus.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.63/configure new/gtkwave-3.3.64/configure
--- old/gtkwave-3.3.63/configure        2014-11-07 01:41:05.000000000 +0100
+++ new/gtkwave-3.3.64/configure        2014-11-07 23:16:21.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for gtkwave 3.3.63.
+# Generated by GNU Autoconf 2.69 for gtkwave 3.3.64.
 #
 # Report bugs to <byb...@rocketmail.com>.
 #
@@ -580,8 +580,8 @@
 # Identity of this package.
 PACKAGE_NAME='gtkwave'
 PACKAGE_TARNAME='gtkwave'
-PACKAGE_VERSION='3.3.63'
-PACKAGE_STRING='gtkwave 3.3.63'
+PACKAGE_VERSION='3.3.64'
+PACKAGE_STRING='gtkwave 3.3.64'
 PACKAGE_BUGREPORT='byb...@rocketmail.com'
 PACKAGE_URL=''
 
@@ -1383,7 +1383,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures gtkwave 3.3.63 to adapt to many kinds of systems.
+\`configure' configures gtkwave 3.3.64 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1449,7 +1449,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of gtkwave 3.3.63:";;
+     short | recursive ) echo "Configuration of gtkwave 3.3.64:";;
    esac
   cat <<\_ACEOF
 
@@ -1595,7 +1595,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-gtkwave configure 3.3.63
+gtkwave configure 3.3.64
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2239,7 +2239,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by gtkwave $as_me 3.3.63, which was
+It was created by gtkwave $as_me 3.3.64, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3106,7 +3106,7 @@
 
 # Define the identity of the package.
  PACKAGE='gtkwave'
- VERSION='3.3.63'
+ VERSION='3.3.64'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -10992,7 +10992,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by gtkwave $as_me 3.3.63, which was
+This file was extended by gtkwave $as_me 3.3.64, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -11058,7 +11058,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-gtkwave config.status 3.3.63
+gtkwave config.status 3.3.64
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.63/configure.ac 
new/gtkwave-3.3.64/configure.ac
--- old/gtkwave-3.3.63/configure.ac     2014-11-07 01:41:05.000000000 +0100
+++ new/gtkwave-3.3.64/configure.ac     2014-11-07 23:16:21.000000000 +0100
@@ -2,7 +2,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.59)
-AC_INIT(gtkwave, 3.3.63, byb...@rocketmail.com)
+AC_INIT(gtkwave, 3.3.64, byb...@rocketmail.com)
 AC_CONFIG_SRCDIR([src/vcd.c])
 AM_INIT_AUTOMAKE
 AC_CONFIG_HEADER([config.h])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gtkwave-3.3.63/contrib/bundle_for_osx/Info-gtkwave.plist 
new/gtkwave-3.3.64/contrib/bundle_for_osx/Info-gtkwave.plist
--- old/gtkwave-3.3.63/contrib/bundle_for_osx/Info-gtkwave.plist        
2014-09-03 18:14:43.000000000 +0200
+++ new/gtkwave-3.3.64/contrib/bundle_for_osx/Info-gtkwave.plist        
2014-11-07 23:16:21.000000000 +0100
@@ -8,7 +8,7 @@
     <key>CFBundleExecutable</key>
     <string>gtkwave</string>
     <key>CFBundleGetInfoString</key>
-    <string>3.3.63, (C) 1999-2014 Tony Bybell 
http://gtkwave.sourceforge.net</string>
+    <string>3.3.64, (C) 1999-2014 Tony Bybell 
http://gtkwave.sourceforge.net</string>
     <key>CFBundleIconFile</key>
     <string>gtkwave.icns</string>
     <key>CFBundleIdentifier</key>
@@ -18,11 +18,11 @@
     <key>CFBundlePackageType</key>
     <string>APPL</string>
     <key>CFBundleShortVersionString</key>
-    <string>3.3.63</string>
+    <string>3.3.64</string>
     <key>CFBundleSignature</key>
     <string>????</string>
     <key>CFBundleVersion</key>
-    <string>3.3.63</string>
+    <string>3.3.64</string>
     <key>NSHumanReadableCopyright</key>
     <string>Copyright 1999 - 2014 Tony Bybell, GNU General Public 
License.</string>
     <key>LSMinimumSystemVersion</key>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.63/src/file.c 
new/gtkwave-3.3.64/src/file.c
--- old/gtkwave-3.3.63/src/file.c       2014-08-11 02:38:54.000000000 +0200
+++ new/gtkwave-3.3.64/src/file.c       2014-11-14 22:35:18.000000000 +0100
@@ -320,7 +320,8 @@
        {
        if(GLOBALS->loaded_file_name)
                {
-               char *tname = strdup_2(GLOBALS->loaded_file_name);
+               char *can = realpath_2(GLOBALS->loaded_file_name, NULL); /* 
prevents filechooser from blocking/asking where to save file */
+               char *tname = strdup_2(can ? can : GLOBALS->loaded_file_name);
                char *delim = strrchr(tname, '/');
                if(!delim) delim =  strrchr(tname, '\\');
                if(delim)
@@ -332,6 +333,8 @@
                        {
                        free_2(tname);
                        }
+
+               free(can);
                }
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.63/src/helpers/fst/lz4.c 
new/gtkwave-3.3.64/src/helpers/fst/lz4.c
--- old/gtkwave-3.3.63/src/helpers/fst/lz4.c    2014-10-11 00:00:38.000000000 
+0200
+++ new/gtkwave-3.3.64/src/helpers/fst/lz4.c    2014-11-26 03:23:11.000000000 
+0100
@@ -289,7 +289,7 @@
 /**************************************
    Macros
 **************************************/
-#define LZ4_STATIC_ASSERT(c)    { enum { LZ4_static_assert = 1/(!!(c)) }; }   
/* use only *after* variable declarations */
+#define LZ4_STATIC_ASSERT(c)    { enum { LZ4_static_assert = 1/(int)(!!(c)) }; 
}   /* use only *after* variable declarations */
 #if LZ4_ARCH64 || !defined(__GNUC__)
 #  define LZ4_WILDCOPY(d,s,e)   { do { LZ4_COPY8(d,s) } while (d<e); }        
/* at the end, d>=e; */
 #else
@@ -701,6 +701,7 @@
 LZ4_stream_t* LZ4_createStream(void)
 {
     LZ4_stream_t* lz4s = (LZ4_stream_t*)ALLOCATOR(4, LZ4_STREAMSIZE_U32);
+    LZ4_STATIC_ASSERT(LZ4_STREAMSIZE >= sizeof(LZ4_stream_t_internal));    /* 
A compilation error here means LZ4_STREAMSIZE is not large enough */
     LZ4_resetStream(lz4s);
     return lz4s;
 }
@@ -719,14 +720,13 @@
     const BYTE* const dictEnd = p + dictSize;
     const BYTE* base;
 
-    LZ4_STATIC_ASSERT(LZ4_STREAMSIZE >= sizeof(LZ4_stream_t_internal));    /* 
A compilation error here means LZ4_STREAMSIZE is not large enough */
     if (dict->initCheck) LZ4_resetStream(LZ4_dict);                         /* 
Uninitialized structure detected */
 
     if (dictSize < MINMATCH)
     {
         dict->dictionary = NULL;
         dict->dictSize = 0;
-        return 1;
+        return 0;
     }
 
     if (p <= dictEnd - 64 KB) p = dictEnd - 64 KB;
@@ -741,7 +741,7 @@
         p+=3;
     }
 
-    return 1;
+    return dict->dictSize;
 }
 
 
@@ -876,8 +876,8 @@
  * in order to remove useless branches during compilation optimization.
  */
 FORCE_INLINE int LZ4_decompress_generic(
-                 const char* source,
-                 char* dest,
+                 const char* const source,
+                 char* const dest,
                  int inputSize,
                  int outputSize,         /* If endOnInput==endOnInputSize, 
this value is the max size of Output Buffer. */
 
@@ -885,20 +885,20 @@
                  int partialDecoding,    /* full, partial */
                  int targetOutputSize,   /* only used if 
partialDecoding==partial */
                  int dict,               /* noDict, withPrefix64k, 
usingExtDict */
-                 const char* dictStart,  /* only if dict==usingExtDict */
-                 int dictSize            /* note : = 0 if noDict */
+                 const BYTE* const lowPrefix,  /* == dest if dict == noDict */
+                 const BYTE* const dictStart,  /* only if dict==usingExtDict */
+                 const size_t dictSize         /* note : = 0 if noDict */
                  )
 {
     /* Local Variables */
     const BYTE* restrict ip = (const BYTE*) source;
-    const BYTE* ref;
     const BYTE* const iend = ip + inputSize;
 
     BYTE* op = (BYTE*) dest;
     BYTE* const oend = op + outputSize;
     BYTE* cpy;
     BYTE* oexit = op + targetOutputSize;
-    const BYTE* const lowLimit = (const BYTE*)dest - dictSize;
+    const BYTE* const lowLimit = lowPrefix - dictSize;
 
     const BYTE* const dictEnd = (const BYTE*)dictStart + dictSize;
     const size_t dec32table[] = {4, 1, 2, 1, 4, 4, 4, 4};
@@ -919,8 +919,9 @@
     {
         unsigned token;
         size_t length;
+        const BYTE* match;
 
-        /* get runlength */
+        /* get literal length */
         token = *ip++;
         if ((length=(token>>ML_BITS)) == RUN_MASK)
         {
@@ -931,8 +932,8 @@
                 length += s;
             }
             while (likely((endOnInput)?ip<iend-RUN_MASK:1) && (s==255));
-            if ((safeDecode) && LZ4_32BITS && 
unlikely((size_t)(op+length)<(size_t)(op))) goto _output_error;   /* overflow 
detection */
-            if ((safeDecode) && LZ4_32BITS && 
unlikely((size_t)(ip+length)<(size_t)(ip))) goto _output_error;   /* overflow 
detection */
+            if ((safeDecode) && unlikely((size_t)(op+length)<(size_t)(op))) 
goto _output_error;   /* overflow detection */
+            if ((safeDecode) && unlikely((size_t)(ip+length)<(size_t)(ip))) 
goto _output_error;   /* overflow detection */
         }
 
         /* copy literals */
@@ -958,8 +959,8 @@
         LZ4_WILDCOPY(op, ip, cpy); ip -= (op-cpy); op = cpy;
 
         /* get offset */
-        LZ4_READ_LITTLEENDIAN_16(ref,cpy,ip); ip+=2;
-        if ((checkOffset) && (unlikely(ref < lowLimit))) goto _output_error;   
/* Error : offset outside destination buffer */
+        LZ4_READ_LITTLEENDIAN_16(match,cpy,ip); ip+=2;
+        if ((checkOffset) && (unlikely(match < lowLimit))) goto _output_error; 
  /* Error : offset outside destination buffer */
 
         /* get matchlength */
         if ((length=(token&ML_MASK)) == ML_MASK)
@@ -971,36 +972,38 @@
                 s = *ip++;
                 length += s;
             } while (s==255);
-            if ((safeDecode) && LZ4_32BITS && 
unlikely((size_t)(op+length)<(size_t)op)) goto _output_error;   /* overflow 
detection */
+            if ((safeDecode) && unlikely((size_t)(op+length)<(size_t)op)) goto 
_output_error;   /* overflow detection */
         }
         length += MINMATCH;
 
         /* check external dictionary */
-        if ((dict==usingExtDict) && (ref < (BYTE* const)dest))
+        if ((dict==usingExtDict) && (match < lowPrefix))
         {
-            if (unlikely(op+length > oend-LASTLITERALS)) goto _output_error;
+            if (unlikely(op+length > oend-LASTLITERALS)) goto _output_error;   
/* doesn't respect parsing restriction */
 
-            if (length <= (size_t)(dest-(char*)ref))
+            if (length <= (size_t)(lowPrefix-match))
             {
-                ref = dictEnd - (dest-(char*)ref);
-                memcpy(op, ref, length);
+                /* match can be copied as a single segment from external 
dictionary */
+                match = dictEnd - (lowPrefix-match);
+                memcpy(op, match, length);
                 op += length;
             }
             else
             {
-                size_t copySize = (size_t)(dest-(char*)ref);
+                /* match encompass external dictionary and current segment */
+                size_t copySize = (size_t)(lowPrefix-match);
                 memcpy(op, dictEnd - copySize, copySize);
                 op += copySize;
                 copySize = length - copySize;
-                if (copySize > (size_t)((char*)op-dest))   /* overlap */
+                if (copySize > (size_t)(op-lowPrefix))   /* overlap within 
current segment */
                 {
                     BYTE* const endOfMatch = op + copySize;
-                    const BYTE* copyFrom = (BYTE*)dest;
+                    const BYTE* copyFrom = lowPrefix;
                     while (op < endOfMatch) *op++ = *copyFrom++;
                 }
                 else
                 {
-                    memcpy(op, dest, copySize);
+                    memcpy(op, lowPrefix, copySize);
                     op += copySize;
                 }
             }
@@ -1009,25 +1012,25 @@
 
         /* copy repeated sequence */
         cpy = op + length;
-        if (unlikely((op-ref)<(int)STEPSIZE))
+        if (unlikely((op-match)<(int)STEPSIZE))
         {
-            const size_t dec64 = dec64table[op-ref];
-            op[0] = ref[0];
-            op[1] = ref[1];
-            op[2] = ref[2];
-            op[3] = ref[3];
-            ref += dec32table[op-ref];
-            A32(op+4) = A32(ref);
-            op += 8; ref -= dec64;
-        } else { LZ4_COPY8(op,ref); }
+            const size_t dec64 = dec64table[op-match];
+            op[0] = match[0];
+            op[1] = match[1];
+            op[2] = match[2];
+            op[3] = match[3];
+            match += dec32table[op-match];
+            A32(op+4) = A32(match);
+            op += 8; match -= dec64;
+        } else { LZ4_COPY8(op,match); }
 
         if (unlikely(cpy>oend-12))
         {
             if (cpy > oend-LASTLITERALS) goto _output_error;    /* Error : 
last 5 bytes must be literals */
-            if (op<oend-COPYLENGTH) LZ4_WILDCOPY(op, ref, (oend-COPYLENGTH));
-            while(op<cpy) *op++=*ref++;
+            if (op<oend-COPYLENGTH) LZ4_WILDCOPY(op, match, (oend-COPYLENGTH));
+            while(op<cpy) *op++=*match++;
         }
-        else LZ4_WILDCOPY(op, ref, cpy);
+        else LZ4_WILDCOPY(op, match, cpy);
         op=cpy;   /* correction */
     }
 
@@ -1045,25 +1048,28 @@
 
 int LZ4_decompress_safe(const char* source, char* dest, int compressedSize, 
int maxDecompressedSize)
 {
-    return LZ4_decompress_generic(source, dest, compressedSize, 
maxDecompressedSize, endOnInputSize, full, 0, noDict, NULL, 0);
+    return LZ4_decompress_generic(source, dest, compressedSize, 
maxDecompressedSize, endOnInputSize, full, 0, noDict, (BYTE*)dest, NULL, 0);
 }
 
 int LZ4_decompress_safe_partial(const char* source, char* dest, int 
compressedSize, int targetOutputSize, int maxDecompressedSize)
 {
-    return LZ4_decompress_generic(source, dest, compressedSize, 
maxDecompressedSize, endOnInputSize, partial, targetOutputSize, noDict, NULL, 
0);
+    return LZ4_decompress_generic(source, dest, compressedSize, 
maxDecompressedSize, endOnInputSize, partial, targetOutputSize, noDict, 
(BYTE*)dest, NULL, 0);
 }
 
 int LZ4_decompress_fast(const char* source, char* dest, int originalSize)
 {
-    return LZ4_decompress_generic(source, dest, 0, originalSize, 
endOnOutputSize, full, 0, withPrefix64k, NULL, 64 KB);
+    return LZ4_decompress_generic(source, dest, 0, originalSize, 
endOnOutputSize, full, 0, withPrefix64k, (BYTE*)(dest - 64 KB), NULL, 64 KB);
 }
 
+
 /* streaming decompression functions */
 
 typedef struct
 {
-    const char* dictionary;
-    int dictSize;
+    BYTE* externalDict;
+    size_t extDictSize;
+    BYTE* prefixEnd;
+    size_t prefixSize;
 } LZ4_streamDecode_t_internal;
 
 /*
@@ -1074,7 +1080,6 @@
 LZ4_streamDecode_t* LZ4_createStreamDecode(void)
 {
     LZ4_streamDecode_t* lz4s = (LZ4_streamDecode_t*) ALLOCATOR(sizeof(U32), 
LZ4_STREAMDECODESIZE_U32);
-    MEM_INIT(lz4s, 0, LZ4_STREAMDECODESIZE);
     return lz4s;
 }
 
@@ -1094,8 +1099,10 @@
 int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* 
dictionary, int dictSize)
 {
     LZ4_streamDecode_t_internal* lz4sd = (LZ4_streamDecode_t_internal*) 
LZ4_streamDecode;
-    lz4sd->dictionary = dictionary;
-    lz4sd->dictSize = dictSize;
+    lz4sd->prefixSize = (size_t) dictSize;
+    lz4sd->prefixEnd = (BYTE*) dictionary + dictSize;
+    lz4sd->externalDict = NULL;
+    lz4sd->extDictSize  = 0;
     return 1;
 }
 
@@ -1104,23 +1111,32 @@
     These decoding functions allow decompression of multiple blocks in 
"streaming" mode.
     Previously decoded blocks must still be available at the memory position 
where they were decoded.
     If it's not possible, save the relevant part of decoded data into a safe 
buffer,
-    and indicate where it stands using LZ4_setDictDecode()
+    and indicate where it stands using LZ4_setStreamDecode()
 */
 int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const 
char* source, char* dest, int compressedSize, int maxOutputSize)
 {
     LZ4_streamDecode_t_internal* lz4sd = (LZ4_streamDecode_t_internal*) 
LZ4_streamDecode;
     int result;
 
-    result = LZ4_decompress_generic(source, dest, compressedSize, 
maxOutputSize, endOnInputSize, full, 0, usingExtDict, lz4sd->dictionary, 
lz4sd->dictSize);
-    if (result <= 0) return result;
-    if (lz4sd->dictionary + lz4sd->dictSize == dest)
+    if (lz4sd->prefixEnd == (BYTE*)dest)
     {
-        lz4sd->dictSize += result;
+        result = LZ4_decompress_generic(source, dest, compressedSize, 
maxOutputSize,
+                                        endOnInputSize, full, 0,
+                                        usingExtDict, lz4sd->prefixEnd - 
lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize);
+        if (result <= 0) return result;
+        lz4sd->prefixSize += result;
+        lz4sd->prefixEnd  += result;
     }
     else
     {
-        lz4sd->dictionary = dest;
-        lz4sd->dictSize = result;
+        lz4sd->extDictSize = lz4sd->prefixSize;
+        lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize;
+        result = LZ4_decompress_generic(source, dest, compressedSize, 
maxOutputSize,
+                                        endOnInputSize, full, 0,
+                                        usingExtDict, (BYTE*)dest, 
lz4sd->externalDict, lz4sd->extDictSize);
+        if (result <= 0) return result;
+        lz4sd->prefixSize = result;
+        lz4sd->prefixEnd  = (BYTE*)dest + result;
     }
 
     return result;
@@ -1131,16 +1147,25 @@
     LZ4_streamDecode_t_internal* lz4sd = (LZ4_streamDecode_t_internal*) 
LZ4_streamDecode;
     int result;
 
-    result = LZ4_decompress_generic(source, dest, 0, originalSize, 
endOnOutputSize, full, 0, usingExtDict, lz4sd->dictionary, lz4sd->dictSize);
-    if (result <= 0) return result;
-    if (lz4sd->dictionary + lz4sd->dictSize == dest)
+    if (lz4sd->prefixEnd == (BYTE*)dest)
     {
-        lz4sd->dictSize += result;
+        result = LZ4_decompress_generic(source, dest, 0, originalSize,
+                                        endOnOutputSize, full, 0,
+                                        usingExtDict, lz4sd->prefixEnd - 
lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize);
+        if (result <= 0) return result;
+        lz4sd->prefixSize += originalSize;
+        lz4sd->prefixEnd  += originalSize;
     }
     else
     {
-        lz4sd->dictionary = dest;
-        lz4sd->dictSize = result;
+        lz4sd->extDictSize = lz4sd->prefixSize;
+        lz4sd->externalDict = (BYTE*)dest - lz4sd->extDictSize;
+        result = LZ4_decompress_generic(source, dest, 0, originalSize,
+                                        endOnOutputSize, full, 0,
+                                        usingExtDict, (BYTE*)dest, 
lz4sd->externalDict, lz4sd->extDictSize);
+        if (result <= 0) return result;
+        lz4sd->prefixSize = originalSize;
+        lz4sd->prefixEnd  = (BYTE*)dest + originalSize;
     }
 
     return result;
@@ -1157,28 +1182,30 @@
 FORCE_INLINE int LZ4_decompress_usingDict_generic(const char* source, char* 
dest, int compressedSize, int maxOutputSize, int safe, const char* dictStart, 
int dictSize)
 {
     if (dictSize==0)
-        return LZ4_decompress_generic(source, dest, compressedSize, 
maxOutputSize, safe, full, 0, noDict, NULL, 64 KB);
-    if ((dictStart+dictSize == dest) && (dictSize >= (int)(64 KB - 1)))
-        return LZ4_decompress_generic(source, dest, compressedSize, 
maxOutputSize, safe, full, 0, withPrefix64k, NULL, 64 KB);
-    return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, 
safe, full, 0, usingExtDict, dictStart, dictSize);
+        return LZ4_decompress_generic(source, dest, compressedSize, 
maxOutputSize, safe, full, 0, noDict, (BYTE*)dest, NULL, 0);
+    if (dictStart+dictSize == dest)
+    {
+        if (dictSize >= (int)(64 KB - 1))
+            return LZ4_decompress_generic(source, dest, compressedSize, 
maxOutputSize, safe, full, 0, withPrefix64k, (BYTE*)dest-64 KB, NULL, 0);
+        return LZ4_decompress_generic(source, dest, compressedSize, 
maxOutputSize, safe, full, 0, noDict, (BYTE*)dest-dictSize, NULL, 0);
+    }
+    return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, 
safe, full, 0, usingExtDict, (BYTE*)dest, (BYTE*)dictStart, dictSize);
 }
 
 int LZ4_decompress_safe_usingDict(const char* source, char* dest, int 
compressedSize, int maxOutputSize, const char* dictStart, int dictSize)
 {
-    //return LZ4_decompress_generic(source, dest, compressedSize, 
maxOutputSize, endOnInputSize, full, 0, usingExtDict, dictStart, dictSize);
     return LZ4_decompress_usingDict_generic(source, dest, compressedSize, 
maxOutputSize, 1, dictStart, dictSize);
 }
 
 int LZ4_decompress_fast_usingDict(const char* source, char* dest, int 
originalSize, const char* dictStart, int dictSize)
 {
-    //return LZ4_decompress_generic(source, dest, 0, originalSize, 
endOnOutputSize, full, 0, usingExtDict, dictStart, dictSize);
     return LZ4_decompress_usingDict_generic(source, dest, 0, originalSize, 0, 
dictStart, dictSize);
 }
 
 /* debug function */
 int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, int 
compressedSize, int maxOutputSize, const char* dictStart, int dictSize)
 {
-    return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, 
endOnInputSize, full, 0, usingExtDict, dictStart, dictSize);
+    return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, 
endOnInputSize, full, 0, usingExtDict, (BYTE*)dest, (BYTE*)dictStart, dictSize);
 }
 
 
@@ -1258,10 +1285,10 @@
 
 int LZ4_decompress_safe_withPrefix64k(const char* source, char* dest, int 
compressedSize, int maxOutputSize)
 {
-    return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, 
endOnInputSize, full, 0, withPrefix64k, NULL, 64 KB);
+    return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, 
endOnInputSize, full, 0, withPrefix64k, (BYTE*)dest - 64 KB, NULL, 64 KB);
 }
 
 int LZ4_decompress_fast_withPrefix64k(const char* source, char* dest, int 
originalSize)
 {
-    return LZ4_decompress_generic(source, dest, 0, originalSize, 
endOnOutputSize, full, 0, withPrefix64k, NULL, 64 KB);
+    return LZ4_decompress_generic(source, dest, 0, originalSize, 
endOnOutputSize, full, 0, withPrefix64k, (BYTE*)dest - 64 KB, NULL, 64 KB);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.63/src/helpers/fst/lz4.h 
new/gtkwave-3.3.64/src/helpers/fst/lz4.h
--- old/gtkwave-3.3.63/src/helpers/fst/lz4.h    2014-10-11 00:00:38.000000000 
+0200
+++ new/gtkwave-3.3.64/src/helpers/fst/lz4.h    2014-11-26 03:23:11.000000000 
+0100
@@ -47,8 +47,8 @@
    Version
 **************************************/
 #define LZ4_VERSION_MAJOR    1    /* for major interface/format changes  */
-#define LZ4_VERSION_MINOR    3    /* for minor interface/format changes  */
-#define LZ4_VERSION_RELEASE  1    /* for tweaks, bug-fixes, or development */
+#define LZ4_VERSION_MINOR    4    /* for minor interface/format changes  */
+#define LZ4_VERSION_RELEASE  0    /* for tweaks, bug-fixes, or development */
 #define LZ4_VERSION_NUMBER (LZ4_VERSION_MAJOR *100*100 + LZ4_VERSION_MINOR 
*100 + LZ4_VERSION_RELEASE)
 int LZ4_versionNumber (void);
 
@@ -193,30 +193,30 @@
  * LZ4_freeStream releases its memory.
  */
 LZ4_stream_t* LZ4_createStream(void);
-int           LZ4_freeStream (LZ4_stream_t* LZ4_stream);
+int           LZ4_freeStream (LZ4_stream_t* LZ4_streamPtr);
 
 /*
  * LZ4_loadDict
  * Use this function to load a static dictionary into LZ4_stream.
  * Any previous data will be forgotten, only 'dictionary' will remain in 
memory.
  * Loading a size of 0 is allowed.
- * Return : 1 if OK, 0 if error
+ * Return : dictionary size, in bytes (necessarily <= 64 KB)
  */
-int LZ4_loadDict (LZ4_stream_t* LZ4_stream, const char* dictionary, int 
dictSize);
+int LZ4_loadDict (LZ4_stream_t* LZ4_streamPtr, const char* dictionary, int 
dictSize);
 
 /*
  * LZ4_compress_continue
  * Compress data block 'source', using blocks compressed before as dictionary 
to improve compression ratio
  * Previous data blocks are assumed to still be present at their previous 
location.
  */
-int LZ4_compress_continue (LZ4_stream_t* LZ4_stream, const char* source, char* 
dest, int inputSize);
+int LZ4_compress_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, 
char* dest, int inputSize);
 
 /*
  * LZ4_compress_limitedOutput_continue
  * Same as before, but also specify a maximum target compressed size 
(maxOutputSize)
  * If objective cannot be met, compression exits, and returns a zero.
  */
-int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_stream, const char* 
source, char* dest, int inputSize, int maxOutputSize);
+int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_streamPtr, const 
char* source, char* dest, int inputSize, int maxOutputSize);
 
 /*
  * LZ4_saveDict
@@ -227,14 +227,14 @@
  * Return : dictionary size in bytes, or 0 if error
  * Note : any dictSize > 64 KB will be interpreted as 64KB.
  */
-int LZ4_saveDict (LZ4_stream_t* LZ4_stream, char* safeBuffer, int dictSize);
+int LZ4_saveDict (LZ4_stream_t* LZ4_streamPtr, char* safeBuffer, int dictSize);
 
 
 /************************************************
   Experimental Streaming Decompression Functions
 ************************************************/
 
-#define LZ4_STREAMDECODESIZE_U32 4
+#define LZ4_STREAMDECODESIZE_U32  8
 #define LZ4_STREAMDECODESIZE     (LZ4_STREAMDECODESIZE_U32 * sizeof(unsigned 
int))
 /*
  * LZ4_streamDecode_t
@@ -244,29 +244,29 @@
 typedef struct { unsigned int table[LZ4_STREAMDECODESIZE_U32]; } 
LZ4_streamDecode_t;
 
 /*
+ * If you prefer dynamic allocation methods,
+ * LZ4_createStreamDecode will allocate and initialize an LZ4_streamDecode_t 
structure
+ * LZ4_freeStreamDecode releases its memory.
+ */
+LZ4_streamDecode_t* LZ4_createStreamDecode(void);
+int                 LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream);
+
+/*
  * LZ4_setStreamDecode
  * Use this function to instruct where to find the dictionary.
  * This function can be used to specify a static dictionary,
  * or to instruct where to find some previously decoded data saved into a 
different memory space.
- * Setting a size of 0 is allowed (same effect as no dictionary).
+ * Setting a size of 0 is allowed (same effect as no dictionary, same effect 
as reset).
  * Return : 1 if OK, 0 if error
  */
 int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* 
dictionary, int dictSize);
 
 /*
- * If you prefer dynamic allocation methods,
- * LZ4_createStreamDecode will allocate and initialize an LZ4_streamDecode_t 
structure
- * LZ4_freeStreamDecode releases its memory.
- */
-LZ4_streamDecode_t* LZ4_createStreamDecode(void);
-int                 LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream);
-
-/*
 *_continue() :
     These decoding functions allow decompression of multiple blocks in 
"streaming" mode.
-    Previously decoded blocks must still be available at the memory position 
where they were decoded.
-    If it's not possible, save the relevant part of decoded data into a safe 
buffer,
-    and indicate where its new address using LZ4_setStreamDecode()
+    Previously decoded blocks *must* remain available at the memory position 
where they were decoded (up to 64 KB)
+    If this condition is not possible, save the relevant part of decoded data 
into a safe buffer,
+    and indicate where is its new address using LZ4_setStreamDecode()
 */
 int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const 
char* source, char* dest, int compressedSize, int maxDecompressedSize);
 int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const 
char* source, char* dest, int originalSize);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.63/src/main.c 
new/gtkwave-3.3.64/src/main.c
--- old/gtkwave-3.3.63/src/main.c       2014-08-11 02:38:54.000000000 +0200
+++ new/gtkwave-3.3.64/src/main.c       2014-11-23 17:54:17.000000000 +0100
@@ -707,6 +707,12 @@
 #endif
        }
 
+#if defined(__APPLE__)
+#ifndef MAC_INTEGRATION
+do_primary_inits:  
+#endif
+#endif
+
 if(!mainwindow_already_built)
        {
        wave_gconf_init(argc, argv);

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to