Hello community,

here is the log from the commit of package gtkwave for openSUSE:Factory checked 
in at 2016-02-24 18:43:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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  2015-11-26 
17:02:03.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.gtkwave.new/gtkwave.changes     2016-02-24 
18:43:06.000000000 +0100
@@ -1,0 +2,6 @@
+Wed Feb 24 14:26:32 UTC 2016 - [email protected]
+
+- Update to version 3.3.70
+  * bugfix release, see included ChangeLog file for details
+
+-------------------------------------------------------------------

Old:
----
  gtkwave-3.3.68.tar.gz

New:
----
  gtkwave-3.3.70.tar.gz

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

Other differences:
------------------
++++++ gtkwave.spec ++++++
--- /var/tmp/diff_new_pack.tbRcBs/_old  2016-02-24 18:43:07.000000000 +0100
+++ /var/tmp/diff_new_pack.tbRcBs/_new  2016-02-24 18:43:07.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package gtkwave
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           gtkwave
-Version:        3.3.68
+Version:        3.3.70
 Release:        0
 Summary:        Waveform viewer for Ditital Signals
 License:        GPL-2.0+

++++++ gtkwave-3.3.68.tar.gz -> gtkwave-3.3.70.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.68/ChangeLog new/gtkwave-3.3.70/ChangeLog
--- old/gtkwave-3.3.68/ChangeLog        2015-11-19 02:42:19.000000000 +0100
+++ new/gtkwave-3.3.70/ChangeLog        2016-02-15 23:36:59.000000000 +0100
@@ -1521,3 +1521,13 @@
                input boxes.
                Added support for fixed point binary numbers for both signed 
                and unsigned decimal display types.
+3.3.69 03feb16 Added missing EXTLOAD_CFLAGS declarations in configure.ac for
+               FSDB detection when only .a files are present (necessary for
+               Ubuntu).
+               Fixed valgrind warning in fst.c for dead memory allocation.
+               Fixed signed fixed point binary number shift for negative
+               numbers.
+               Added ghw patch for missing enum crash in ghw files.
+3.3.70 14feb16 Various warnings fixes from new version of scan-build.
+               Crash fix in Windows for transaction traces (broken since
+               VCD/TIM export in 3.3.61).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.68/configure new/gtkwave-3.3.70/configure
--- old/gtkwave-3.3.68/configure        2015-11-05 01:54:35.000000000 +0100
+++ new/gtkwave-3.3.70/configure        2016-02-14 20:37:33.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.68.
+# Generated by GNU Autoconf 2.69 for gtkwave 3.3.70.
 #
 # Report bugs to <[email protected]>.
 #
@@ -580,8 +580,8 @@
 # Identity of this package.
 PACKAGE_NAME='gtkwave'
 PACKAGE_TARNAME='gtkwave'
-PACKAGE_VERSION='3.3.68'
-PACKAGE_STRING='gtkwave 3.3.68'
+PACKAGE_VERSION='3.3.70'
+PACKAGE_STRING='gtkwave 3.3.70'
 PACKAGE_BUGREPORT='[email protected]'
 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.68 to adapt to many kinds of systems.
+\`configure' configures gtkwave 3.3.70 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.68:";;
+     short | recursive ) echo "Configuration of gtkwave 3.3.70:";;
    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.68
+gtkwave configure 3.3.70
 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.68, which was
+It was created by gtkwave $as_me 3.3.70, 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.68'
+ VERSION='3.3.70'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4253,6 +4253,7 @@
                if test "X$FSDB_A" = "Xyes" ; then
                        FSDB_CFLAGS="-DFSDB_IS_PRESENT -I$FSDBREADER_HDRS"
                        FSDB_LDADD="$FSDBREADER_LIBS/libnffr.a"
+                       EXTLOAD_CFLAGS="-DEXTLOAD_SUFFIX=\\\"fsdb\\\""
                else
 
                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: FSDB reader 
library not found, skipping." >&5
@@ -4317,6 +4318,7 @@
                if test "X$AFSDB_A" = "Xyes" ; then
                        FSDB_CFLAGS="-DFSDB_NSYS_IS_PRESENT $FSDB_CFLAGS"
                        FSDB_LDADD="$FSDB_LDADD $FSDBREADER_LIBS/libnsys.a"
+                       EXTLOAD_CFLAGS="-DEXTLOAD_SUFFIX=\\\"fsdb\\\""
                else
 
                FSDB_CFLAGS=
@@ -10992,7 +10994,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.68, which was
+This file was extended by gtkwave $as_me 3.3.70, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -11058,7 +11060,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.68
+gtkwave config.status 3.3.70
 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.68/configure.ac 
new/gtkwave-3.3.70/configure.ac
--- old/gtkwave-3.3.68/configure.ac     2015-11-05 01:53:59.000000000 +0100
+++ new/gtkwave-3.3.70/configure.ac     2016-02-14 20:37:33.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.68, [email protected])
+AC_INIT(gtkwave, 3.3.70, [email protected])
 AC_CONFIG_SRCDIR([src/vcd.c])
 AM_INIT_AUTOMAKE
 AC_CONFIG_HEADER([config.h])
@@ -368,6 +368,7 @@
                if test "X$FSDB_A" = "Xyes" ; then
                        FSDB_CFLAGS="-DFSDB_IS_PRESENT -I$FSDBREADER_HDRS"
                        FSDB_LDADD="$FSDBREADER_LIBS/libnffr.a"
+                       EXTLOAD_CFLAGS="-DEXTLOAD_SUFFIX=\\\"fsdb\\\""
                else
 
                AC_MSG_WARN([FSDB reader library not found, skipping.])
@@ -387,6 +388,7 @@
                if test "X$AFSDB_A" = "Xyes" ; then
                        FSDB_CFLAGS="-DFSDB_NSYS_IS_PRESENT $FSDB_CFLAGS"
                        FSDB_LDADD="$FSDB_LDADD $FSDBREADER_LIBS/libnsys.a"
+                       EXTLOAD_CFLAGS="-DEXTLOAD_SUFFIX=\\\"fsdb\\\""
                else
 
                FSDB_CFLAGS=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.68/src/baseconvert.c 
new/gtkwave-3.3.70/src/baseconvert.c
--- old/gtkwave-3.3.68/src/baseconvert.c        2015-11-19 07:58:08.000000000 
+0100
+++ new/gtkwave-3.3.70/src/baseconvert.c        2016-01-23 08:26:22.000000000 
+0100
@@ -168,37 +168,53 @@
 }
 
 
-static void cvt_fpsdec(Trptr t, TimeType val, char *os, int len)
+static void cvt_fpsdec(Trptr t, TimeType val, char *os, int len, int nbits)
 {
 int shamt = t->t_fpdecshift;
 TimeType lpart = val >> shamt;
 TimeType rmsk = (1 << shamt);
 TimeType rbit = (val >= 0) ? (val & (rmsk-1)) : ((-val) & (rmsk-1));
 double rfrac;
+int negflag = 0;
 char dbuf[32];
 char bigbuf[64];
 
+
 if(rmsk)
-       {
-       rfrac = (double)rbit / (double)rmsk;
-       }
-       else
-       {
-       rfrac = 0.0;
-       }                       
+        {
+        rfrac = (double)rbit / (double)rmsk;
 
-sprintf(dbuf, "%.16g", rfrac);                 
+        if(shamt)
+                {
+                if(lpart < 0)
+                        {
+                        if(rbit)
+                                {
+                                lpart++;
+                                if(!lpart) negflag = 1;
+                                }
+                        }
+                }
+
+        }
+        else
+        {
+        rfrac = 0.0;
+        }
+
+sprintf(dbuf, "%.16g", rfrac);
 char *dot = strchr(dbuf, '.');
+
 if(dot && (dbuf[0] == '0'))
-       {
-       sprintf(bigbuf, TTFormat".%s", lpart, dot+1);
-       strncpy(os, bigbuf, len);
-       os[len-1] = 0;
-       }
-       else
-       {
-       sprintf(os, TTFormat, lpart);
-       }
+        {
+       sprintf(bigbuf, "%s"TTFormat".%s", negflag ? "-" : "", lpart, dot+1);
+        strncpy(os, bigbuf, len);
+        os[len-1] = 0;
+        }
+        else
+        {
+       sprintf(os, "%s"TTFormat, negflag ? "-" : "", lpart);
+        }
 }
 
 static void cvt_fpsudec(Trptr t, TimeType val, char *os, int len)
@@ -674,7 +690,7 @@
                {
                if((flags&TR_FPDECSHIFT)&&(t->t_fpdecshift))
                        {
-                       cvt_fpsdec(t, val, os, len);
+                       cvt_fpsdec(t, val, os, len, nbits);
                        }
                        else
                        {
@@ -1376,7 +1392,7 @@
                {
                if((flags&TR_FPDECSHIFT)&&(t->t_fpdecshift))
                        {
-                       cvt_fpsdec(t, val, os, len);
+                       cvt_fpsdec(t, val, os, len, nbits);
                        }
                        else
                        {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.68/src/fst.c new/gtkwave-3.3.70/src/fst.c
--- old/gtkwave-3.3.68/src/fst.c        2015-04-15 02:14:04.000000000 +0200
+++ new/gtkwave-3.3.70/src/fst.c        2015-12-04 08:15:48.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) Tony Bybell 2009-2015.
+ * Copyright (c) Tony Bybell 2009-2016.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -1021,6 +1021,8 @@
         s->n=n;
         }                      /* for(i) of facs parsing */
 
+
+if(f_name_max_len) { free_2(f_name_max_len); f_name_max_len = NULL; }
 if(nnam) { free_2(nnam); nnam = NULL; }
 if(f_name_build_buf) { free_2(f_name_build_buf); f_name_build_buf = NULL; }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.68/src/ghw.c new/gtkwave-3.3.70/src/ghw.c
--- old/gtkwave-3.3.68/src/ghw.c        2015-05-09 01:17:16.000000000 +0200
+++ new/gtkwave-3.3.70/src/ghw.c        2016-02-05 04:32:29.000000000 +0100
@@ -492,7 +492,37 @@
          }
       }
       return;
+    /* PATCH-BEGIN: */
+    case ghdl_rtik_type_b2:
+      {
+       int32_t v;
+       char *nam;
+       struct ghw_range_b2 *r;
+       /* struct tree *last; */
+       int len;
 
+       /* last = NULL; */
+       r = &arr->sa.rngs[dim]->b2;
+       len = ghw_get_range_length ((union ghw_range *)r);
+       if (len <= 0)
+         break;
+       v = r->left;
+       while (1)
+         {
+           sprintf(GLOBALS->asbuf, "%s%c"GHWLD, pfx, dim == 0 ? '[' : ',', v);
+            nam = strdup_2(GLOBALS->asbuf);
+           build_hierarchy_array (h, arr, dim + 1, nam, res, sig);
+           free_2(nam);
+           if (v == r->right)
+             break;
+           if (r->dir == 0)
+             v++;
+           else
+             v--;
+         }
+      }
+      return;
+      /* PATCH-END: */
     default:
       fprintf (stderr, "build_hierarchy_array: unhandled type %d\n",
               idx->kind);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.68/src/ghwlib.c 
new/gtkwave-3.3.70/src/ghwlib.c
--- old/gtkwave-3.3.68/src/ghwlib.c     2014-07-10 00:42:27.000000000 +0200
+++ new/gtkwave-3.3.70/src/ghwlib.c     2016-02-05 04:32:29.000000000 +0100
@@ -480,7 +480,15 @@
       if (rng->e8.dir)
        return (rng->e8.left - rng->e8.right + 1);
       else
-       return (rng->e8.right - rng->e8.left + 1);
+  return (rng->e8.right - rng->e8.left + 1);
+
+    /* PATCH-BEGIN: */
+    case ghdl_rtik_type_b2:
+      if (rng->b2.dir)
+       return (rng->b2.left - rng->b2.right + 1);
+      else
+       return (rng->b2.right - rng->b2.left + 1);
+    /* PATCH-END: */
 
     default:
       fprintf (stderr, "get_range_length: unhandled kind %d\n", rng->kind);
@@ -1349,12 +1357,19 @@
 void
 ghw_get_value (char *buf, int len, union ghw_val *val, union ghw_type *type)
 {
-  switch (ghw_get_base_type (type)->kind)
+  /* PATCH-BEGIN: */
+  union ghw_type *base = ghw_get_base_type (type);
+  switch (base->kind)
+  /* switch (ghw_get_base_type (type)->kind) */
+  /* PATCH-END: */
     {
     case ghdl_rtik_type_b2:
       if (val->b2 <= 1)
        {
-         strncpy (buf, type->en.lits[val->b2], len - 1);
+    /* PATCH-BEGIN: */
+    strncpy (buf, base->en.lits[val->b2], len - 1);
+         /* strncpy (buf, type->en.lits[val->b2], len - 1); */
+    /* PATCH-END: */
          buf[len - 1] = 0;
        }
       else
@@ -1363,12 +1378,21 @@
        }
       break;
     case ghdl_rtik_type_e8:
-      if (val->e8 <= type->en.nbr)
+      /* PATCH-BEGIN: */
+      if (val->e8 <= base->en.nbr)
+      /* if (val->e8 <= type->en.nbr) */
+      /* PATCH-END: */
        {
          /* XXX : without the if() is this a programming error? */
-         if(type->en.lits)
+    /* PATCH-BEGIN: */
+         if(base->en.lits)
+         /* if(type->en.lits) */
+    /* PATCH-END: */
                {
-               strncpy (buf, type->en.lits[val->e8], len - 1);
+      /* PATCH-BEGIN: */
+               strncpy (buf, base->en.lits[val->e8], len - 1);
+               /* strncpy (buf, type->en.lits[val->e8], len - 1); */
+      /* PATCH-END: */
                buf[len - 1] = 0;
                }
                else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.68/src/ghwlib.h 
new/gtkwave-3.3.70/src/ghwlib.h
--- old/gtkwave-3.3.68/src/ghwlib.h     2014-05-28 06:59:41.000000000 +0200
+++ new/gtkwave-3.3.70/src/ghwlib.h     2016-02-05 04:32:29.000000000 +0100
@@ -148,6 +148,9 @@
 {
   unsigned kind : 8;
   struct ghw_range_e8 e8;
+  /* PATCH-BEGIN: */
+  struct ghw_range_b2 b2;
+  /* PATCH-END: */
   struct ghw_range_i32 i32;
   struct ghw_range_i64 i64;
   struct ghw_range_f64 f64;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.68/src/helpers/fst/fstapi.c 
new/gtkwave-3.3.70/src/helpers/fst/fstapi.c
--- old/gtkwave-3.3.68/src/helpers/fst/fstapi.c 2015-05-08 23:52:58.000000000 
+0200
+++ new/gtkwave-3.3.70/src/helpers/fst/fstapi.c 2015-12-15 07:36:14.000000000 
+0100
@@ -279,7 +279,6 @@
 static char *fstRealpath(const char *path, char *resolved_path)
 {
 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __CYGWIN__ || 
defined HAVE_REALPATH
-
 #if (defined(__MACH__) && defined(__APPLE__))
 if(!resolved_path)
         {
@@ -297,6 +296,8 @@
         }
 return(_fullpath(resolved_path, path, PATH_MAX));
 #else
+(void)path;
+(void)resolved_path;
 return(NULL);
 #endif
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.68/src/helpers/vzt_read.c 
new/gtkwave-3.3.70/src/helpers/vzt_read.c
--- old/gtkwave-3.3.68/src/helpers/vzt_read.c   2015-05-09 01:17:16.000000000 
+0200
+++ new/gtkwave-3.3.70/src/helpers/vzt_read.c   2016-02-14 20:37:33.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003-2015 Tony Bybell.
+ * Copyright (c) 2003-2016 Tony Bybell.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -812,7 +812,7 @@
 
 struct vzt_ncycle_autosort **autosort;
 struct vzt_ncycle_autosort *deadlist=NULL;
-struct vzt_ncycle_autosort *autofacs= calloc(lt->numrealfacs, sizeof(struct 
vzt_ncycle_autosort));
+struct vzt_ncycle_autosort *autofacs= calloc(lt->numrealfacs ? lt->numrealfacs 
: 1, sizeof(struct vzt_ncycle_autosort)); /* fix for scan-build on 
lt->numrealfacs */
 
 vzt_rd_block_vch_decode(lt, b);
 vzt_rd_pthread_mutex_lock(lt, &b->mutex);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.68/src/tcl_helper.c 
new/gtkwave-3.3.70/src/tcl_helper.c
--- old/gtkwave-3.3.68/src/tcl_helper.c 2015-11-19 07:58:08.000000000 +0100
+++ new/gtkwave-3.3.70/src/tcl_helper.c 2016-02-14 20:37:33.000000000 +0100
@@ -747,7 +747,7 @@
 
 if(elem)
         {
-        if(strcmp("gtkwave", elem[0]))
+        if((!elem[0]) || strcmp("gtkwave", elem[0])) /* scan-build: elem[0] is 
NULL */
                {
                free_2(elem);
                elem = NULL;
@@ -784,7 +784,7 @@
 
 if(elem)
        {
-       if((!strcmp("net", elem[0])) || (!strcmp("netBus", elem[0])))
+       if ((elem[0]) &&  ((!strcmp("net", elem[0])) || (!strcmp("netBus", 
elem[0])))) /* scan-build: elem[0] can be NULL */
                {
                char delim_str[2];
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.68/src/vcd_saver.c 
new/gtkwave-3.3.70/src/vcd_saver.c
--- old/gtkwave-3.3.68/src/vcd_saver.c  2015-05-09 01:17:16.000000000 +0200
+++ new/gtkwave-3.3.70/src/vcd_saver.c  2016-02-15 23:36:59.000000000 +0100
@@ -15,14 +15,35 @@
 #include "hierpack.h"
 #include <time.h>
 
-static void w32redirect_fprintf(FILE *sfd, const char *format, ...)
+static void w32redirect_fprintf(int is_trans, FILE *sfd, const char *format, 
...)
 {
-va_list ap;
-va_start(ap, format);
-vfprintf(sfd, format, ap);
-va_end(ap);
+#if defined _MSC_VER || defined __MINGW32__
+if(is_trans)
+       {
+       char buf[16385];
+       BOOL bSuccess;
+       DWORD dwWritten;
+
+       va_list ap;
+       va_start(ap, format);
+       buf[0] = 0;
+       vsprintf(buf, format, ap);
+       bSuccess = WriteFile((HANDLE)sfd, buf, strlen(buf), &dwWritten, NULL);
+       va_end(ap);
+       }
+       else
+#else
+(void) is_trans;
+#endif
+       {
+       va_list ap;
+       va_start(ap, format);
+       vfprintf(sfd, format, ap);
+       va_end(ap);
+       }
 }
 
+
 /*
  * unconvert trace data back to VCD representation...use strict mode for LXT
  */
@@ -342,6 +363,7 @@
 char *row_data = NULL;
 struct lt_trace *lt = NULL;
 int lxt = (export_typ == WAVE_EXPORT_LXT);
+int is_trans = (export_typ == WAVE_EXPORT_TRANS);
 
 if(export_typ == WAVE_EXPORT_TIM)
        {
@@ -507,30 +529,30 @@
        if(export_typ != WAVE_EXPORT_TRANS)
                {
                time(&walltime);
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$date\n");
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, 
"\t%s",asctime(localtime(&walltime)));
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$end\n");
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, 
"$version\n\t"WAVE_VERSION_INFO"\n$end\n");
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, 
"$timescale\n\t%d%c%s\n$end\n", (int)GLOBALS->time_scale, 
GLOBALS->time_dimension, (GLOBALS->time_dimension=='s') ? "" : "s");
-               if(GLOBALS->global_time_offset) { 
w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, 
"$timezero\n\t"TTFormat"\n$end\n",GLOBALS->global_time_offset); }
+               w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$date\n");
+               w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"\t%s",asctime(localtime(&walltime)));
+               w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$end\n");
+               w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$version\n\t"WAVE_VERSION_INFO"\n$end\n");
+               w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$timescale\n\t%d%c%s\n$end\n", (int)GLOBALS->time_scale, 
GLOBALS->time_dimension, (GLOBALS->time_dimension=='s') ? "" : "s");
+               if(GLOBALS->global_time_offset) { w32redirect_fprintf(is_trans, 
GLOBALS->f_vcd_saver_c_1, 
"$timezero\n\t"TTFormat"\n$end\n",GLOBALS->global_time_offset); }
                }
                else
                {
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$comment 
data_start %p $end\n", (void *)trans_head); /* arbitrary hex identifier */
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$comment name %s 
$end\n", trans_head->name ? trans_head->name : "UNKNOWN");
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$timescale 
%d%c%s $end\n", (int)GLOBALS->time_scale, GLOBALS->time_dimension, 
(GLOBALS->time_dimension=='s') ? "" : "s");
-               if(GLOBALS->global_time_offset) { 
w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$timezero "TTFormat" 
$end\n",GLOBALS->global_time_offset); }
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$comment 
min_time "TTFormat" $end\n", GLOBALS->min_time / GLOBALS->time_scale);
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$comment 
max_time "TTFormat" $end\n", GLOBALS->max_time / GLOBALS->time_scale);
+               w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$comment data_start %p $end\n", (void *)trans_head); /* arbitrary hex 
identifier */
+               w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$comment name %s $end\n", trans_head->name ? trans_head->name : "UNKNOWN");
+               w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$timescale %d%c%s $end\n", (int)GLOBALS->time_scale, GLOBALS->time_dimension, 
(GLOBALS->time_dimension=='s') ? "" : "s");
+               if(GLOBALS->global_time_offset) { w32redirect_fprintf(is_trans, 
GLOBALS->f_vcd_saver_c_1, "$timezero "TTFormat" 
$end\n",GLOBALS->global_time_offset); }
+               w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$comment min_time "TTFormat" $end\n", GLOBALS->min_time / GLOBALS->time_scale);
+               w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$comment max_time "TTFormat" $end\n", GLOBALS->max_time / GLOBALS->time_scale);
                }
        }
 
 if(export_typ == WAVE_EXPORT_TRANS)
        {
-        w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$comment max_seqn %d 
$end\n", nodecnt);
+        w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, "$comment 
max_seqn %d $end\n", nodecnt);
        if(t && t->transaction_args)
                {
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$comment args 
\"%s\" $end\n", t->transaction_args);
+               w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$comment args \"%s\" $end\n", t->transaction_args);
                }
         }
 
@@ -542,11 +564,11 @@
        {
        int was_packed = HIER_DEPACK_STATIC;
        char *hname = 
hier_decompress_flagged(GLOBALS->hp_vcd_saver_c_1[i]->item->nname, &was_packed);
-       char *netname = lxt ? hname : output_hier(hname);
+       char *netname = lxt ? hname : output_hier(is_trans, hname);
 
        if(export_typ == WAVE_EXPORT_TRANS)
                {
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$comment seqn %d 
%s $end\n", GLOBALS->hp_vcd_saver_c_1[i]->val, hname);
+               w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$comment seqn %d %s $end\n", GLOBALS->hp_vcd_saver_c_1[i]->val, hname);
                }
 
        if(GLOBALS->hp_vcd_saver_c_1[i]->flags & (HIST_REAL|HIST_STRING))
@@ -559,7 +581,7 @@
                        {
                        const char *typ = (GLOBALS->hp_vcd_saver_c_1[i]->flags 
& HIST_STRING) ? "string" : "real";
                        int tlen = (GLOBALS->hp_vcd_saver_c_1[i]->flags & 
HIST_STRING) ? 0 : 1;
-                       w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$var %s 
%d %s %s $end\n", typ, tlen, vcdid(GLOBALS->hp_vcd_saver_c_1[i]->val, 
export_typ), netname);
+                       w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$var %s %d %s %s $end\n", typ, tlen, vcdid(GLOBALS->hp_vcd_saver_c_1[i]->val, 
export_typ), netname);
                        }
                }
                else
@@ -585,7 +607,7 @@
                                }
                                else
                                {
-                               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, 
"$var wire 1 %s %s $end\n", vcdid(GLOBALS->hp_vcd_saver_c_1[i]->val, 
export_typ), netname);
+                               w32redirect_fprintf(is_trans, 
GLOBALS->f_vcd_saver_c_1, "$var wire 1 %s %s $end\n", 
vcdid(GLOBALS->hp_vcd_saver_c_1[i]->val, export_typ), netname);
                                }
                        }
                        else
@@ -597,7 +619,7 @@
                                }
                                else
                                {
-                               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, 
"$var wire %d %s %s $end\n", len, vcdid(GLOBALS->hp_vcd_saver_c_1[i]->val, 
export_typ), netname);
+                               w32redirect_fprintf(is_trans, 
GLOBALS->f_vcd_saver_c_1, "$var wire %d %s %s $end\n", len, 
vcdid(GLOBALS->hp_vcd_saver_c_1[i]->val, export_typ), netname);
                                }
                        GLOBALS->hp_vcd_saver_c_1[i]->len = len;
                        if(len > max_len) max_len = len;
@@ -611,11 +633,11 @@
 
 if(!lxt)
        {
-       output_hier("");
+       output_hier(is_trans, "");
        free_hier();
 
-       w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$enddefinitions $end\n");
-       w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$dumpvars\n");
+       w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$enddefinitions $end\n");
+       w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, "$dumpvars\n");
        }
 
 /* value changes */
@@ -646,7 +668,7 @@
                        }
                        else
                        {
-                       w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, 
"#"TTFormat"\n", tnorm);
+                       w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"#"TTFormat"\n", tnorm);
                        }
                prevtime = GLOBALS->hp_vcd_saver_c_1[0]->hist->time;
                }
@@ -672,11 +694,11 @@
                                        vec_escaped[vlen] = 0;
                                        if(vlen)
                                                {
-                                               
w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "s%s %s\n", vec_escaped, 
vcdid(GLOBALS->hp_vcd_saver_c_1[0]->val, export_typ));
+                                               w32redirect_fprintf(is_trans, 
GLOBALS->f_vcd_saver_c_1, "s%s %s\n", vec_escaped, 
vcdid(GLOBALS->hp_vcd_saver_c_1[0]->val, export_typ));
                                                }
                                                else
                                                {
-                                               
w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "s\\000 %s\n", 
vcdid(GLOBALS->hp_vcd_saver_c_1[0]->val, export_typ));
+                                               w32redirect_fprintf(is_trans, 
GLOBALS->f_vcd_saver_c_1, "s\\000 %s\n", 
vcdid(GLOBALS->hp_vcd_saver_c_1[0]->val, export_typ));
                                                }
                                        free_2(vec_escaped);
                                        }
@@ -705,7 +727,7 @@
                                        }
                                        else
                                        {
-                                       
w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "r%.16g %s\n", value, 
vcdid(GLOBALS->hp_vcd_saver_c_1[0]->val, export_typ));
+                                       w32redirect_fprintf(is_trans, 
GLOBALS->f_vcd_saver_c_1, "r%.16g %s\n", value, 
vcdid(GLOBALS->hp_vcd_saver_c_1[0]->val, export_typ));
                                        }
                                }
                        }
@@ -734,7 +756,7 @@
                                }
                                else
                                {
-                               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, 
"b%s %s\n", vcd_truncate_bitvec(row_data), 
vcdid(GLOBALS->hp_vcd_saver_c_1[0]->val, export_typ));
+                               w32redirect_fprintf(is_trans, 
GLOBALS->f_vcd_saver_c_1, "b%s %s\n", vcd_truncate_bitvec(row_data), 
vcdid(GLOBALS->hp_vcd_saver_c_1[0]->val, export_typ));
                                }
                        }
                else
@@ -748,7 +770,7 @@
                                }
                                else
                                {
-                               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, 
"%c%s\n", analyzer_demang(lxt, GLOBALS->hp_vcd_saver_c_1[0]->hist->v.h_val), 
vcdid(GLOBALS->hp_vcd_saver_c_1[0]->val, export_typ));
+                               w32redirect_fprintf(is_trans, 
GLOBALS->f_vcd_saver_c_1, "%c%s\n", analyzer_demang(lxt, 
GLOBALS->hp_vcd_saver_c_1[0]->hist->v.h_val), 
vcdid(GLOBALS->hp_vcd_saver_c_1[0]->val, export_typ));
                                }
                        }
                }
@@ -764,7 +786,7 @@
                }
                else
                {
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "#"TTFormat"\n", 
GLOBALS->max_time / GLOBALS->time_scale);
+               w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"#"TTFormat"\n", GLOBALS->max_time / GLOBALS->time_scale);
                }
        }
 
@@ -789,7 +811,7 @@
                }
                else
                {
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$comment 
data_end %p $end\n", (void *)trans_head); /* arbitrary hex identifier */
+               w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$comment data_end %p $end\n", (void *)trans_head); /* arbitrary hex identifier 
*/
 #if !defined _MSC_VER && !defined __MINGW32__
                fflush(GLOBALS->f_vcd_saver_c_1);
 #endif
@@ -842,7 +864,7 @@
  * navigate up and down the scope hierarchy and
  * emit the appropriate vcd scope primitives
  */
-static void diff_hier(struct namehier *nh1, struct namehier *nh2)
+static void diff_hier(int is_trans, struct namehier *nh1, struct namehier *nh2)
 {
 /* struct namehier *nhtemp; */ /* scan-build */
 
@@ -850,7 +872,7 @@
        {
        while((nh1)&&(nh1->not_final))
                {
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$scope module %s 
$end\n", nh1->name);
+               w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, "$scope 
module %s $end\n", nh1->name);
                nh1=nh1->next;
                }
        return;
@@ -868,7 +890,7 @@
                /* nhtemp=nh1; */ /* scan-build */
                while((nh1)&&(nh1->not_final))
                        {
-                       w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$scope 
module %s $end\n", nh1->name);
+                       w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$scope module %s $end\n", nh1->name);
                        nh1=nh1->next;
                        }
                break;
@@ -879,7 +901,7 @@
                /* nhtemp=nh2; */ /* scan-build */
                while((nh2)&&(nh2->not_final))
                        {
-                       w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$upscope 
$end\n");
+                       w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$upscope $end\n");
                        nh2=nh2->next;
                        }
                break;
@@ -890,14 +912,14 @@
                /* nhtemp=nh2; */ /* prune old hier */ /* scan-build */
                while((nh2)&&(nh2->not_final))
                        {
-                       w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$upscope 
$end\n");
+                       w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$upscope $end\n");
                        nh2=nh2->next;
                        }
 
                /* nhtemp=nh1; */ /* add new hier */ /* scan-build */
                while((nh1)&&(nh1->not_final))
                        {
-                       w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "$scope 
module %s $end\n", nh1->name);
+                       w32redirect_fprintf(is_trans, GLOBALS->f_vcd_saver_c_1, 
"$scope module %s $end\n", nh1->name);
                        nh1=nh1->next;
                        }
                break;
@@ -912,7 +934,7 @@
 /*
  * output scopedata for a given name if needed, return pointer to name string
  */
-char *output_hier(char *name)
+char *output_hier(int is_trans, char *name)
 {
 char *pnt, *pnt2;
 char *s;
@@ -973,7 +995,7 @@
 pnt=(++pnt2);
 }
 
-diff_hier(nh_head, GLOBALS->nhold_vcd_saver_c_1);
+diff_hier(is_trans, nh_head, GLOBALS->nhold_vcd_saver_c_1);
 free_hier();
 GLOBALS->nhold_vcd_saver_c_1=nh_head;
 
@@ -1063,7 +1085,7 @@
                                h_val = invert ? AN_USTR_INV[ha[i]->v.h_val] : 
AN_USTR[ha[i]->v.h_val];
                                }
 
-                       w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1,
+                       w32redirect_fprintf(0, GLOBALS->f_vcd_saver_c_1,
                                "Digital_Signal\n"
                                "     Position:          %d\n"
                                "     Height:            24\n"
@@ -1086,14 +1108,14 @@
                        }
 
                h_val = invert ? AN_USTR_INV[ha[i]->v.h_val] : 
AN_USTR[ha[i]->v.h_val];
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "          Edge:  
             "TTFormat".0 %c\n", ha[i]->time, h_val);
+               w32redirect_fprintf(0, GLOBALS->f_vcd_saver_c_1, "          
Edge:               "TTFormat".0 %c\n", ha[i]->time, h_val);
                }
        }
 
 if(first)
        {
        /* need to emit blank trace */
-       w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1,
+       w32redirect_fprintf(0, GLOBALS->f_vcd_saver_c_1,
                "Digital_Signal\n"
                "     Position:          %d\n"
                "     Height:            24\n"
@@ -1284,7 +1306,7 @@
                                h_val = get_hptr_vector_val(t, ha[i]);
                                }
 
-                       w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1,
+                       w32redirect_fprintf(0, GLOBALS->f_vcd_saver_c_1,
                                "Digital_Bus\n"
                                "     Position:          %d\n"
                                "     Height:            24\n"
@@ -1310,14 +1332,14 @@
 
                if(h_val) free_2(h_val);
                h_val = get_hptr_vector_val(t, ha[i]);
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "          Edge:  
             "TTFormat".0 %s\n", ha[i]->time, h_val);
+               w32redirect_fprintf(0, GLOBALS->f_vcd_saver_c_1, "          
Edge:               "TTFormat".0 %s\n", ha[i]->time, h_val);
                }
        }
 
 if(first)
        {
        /* need to emit blank trace */
-       w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1,
+       w32redirect_fprintf(0, GLOBALS->f_vcd_saver_c_1,
                "Digital_Bus\n"
                "     Position:          %d\n"
                "     Height:            24\n"
@@ -1429,7 +1451,7 @@
                                h_val = get_vptr_vector_val(t, ha[i]);
                                }
 
-                       w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1,
+                       w32redirect_fprintf(0, GLOBALS->f_vcd_saver_c_1,
                                "Digital_Bus\n"
                                "     Position:          %d\n"
                                "     Height:            24\n"
@@ -1455,14 +1477,14 @@
 
                if(h_val) free_2(h_val);
                h_val = get_vptr_vector_val(t, ha[i]);
-               w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1, "          Edge:  
             "TTFormat".0 %s\n", ha[i]->time, h_val);
+               w32redirect_fprintf(0, GLOBALS->f_vcd_saver_c_1, "          
Edge:               "TTFormat".0 %s\n", ha[i]->time, h_val);
                }
        }
 
 if(first)
        {
        /* need to emit blank trace */
-       w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1,
+       w32redirect_fprintf(0, GLOBALS->f_vcd_saver_c_1,
                "Digital_Bus\n"
                "     Position:          %d\n"
                "     Height:            24\n"
@@ -1549,7 +1571,7 @@
 pnt=strchr(time_prefix, (int)GLOBALS->time_dimension);
 if(pnt) { offset=pnt-time_prefix; } else offset=0;
 
-w32redirect_fprintf(GLOBALS->f_vcd_saver_c_1,
+w32redirect_fprintf(0, GLOBALS->f_vcd_saver_c_1,
        "Timing Analyzer Settings\n"
        "     Time_Scale:        %E\n"
        "     Time_Per_Division: %E\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gtkwave-3.3.68/src/vcd_saver.h 
new/gtkwave-3.3.70/src/vcd_saver.h
--- old/gtkwave-3.3.68/src/vcd_saver.h  2011-05-30 04:19:08.000000000 +0200
+++ new/gtkwave-3.3.70/src/vcd_saver.h  2016-02-15 23:36:59.000000000 +0100
@@ -25,7 +25,7 @@
 
 /* from helpers/scopenav.c */
 extern void free_hier(void);
-extern char *output_hier(char *name);
+extern char *output_hier(int is_trans, char *name);
 
 #endif
 


Reply via email to