[365] in Zephyr_Bugs

home help back first fref pref prev next nref lref last post

bugs (?) in xzwrite

daemon@ATHENA.MIT.EDU (John T Kohl)
Mon May 18 15:02:33 1992

Date: Mon, 18 May 92 12:02:14 -0700
From: John T Kohl <jtkohl@cs.berkeley.edu>
To: zephyr-bugs@MIT.EDU

Here are some patches to xzwrite.

a) util.c didn't have any <stdarg.h> style stuff
b) edit_window.c and GetString.c seem to do some freeing which causes
X11R5 to barf.  Don't know why; this was enough to get it running on my
machine (no guarantees about memory leaks).

You probably want to put copyright notices & RCS headers on the xzwrite
sources.

*** 1.1	1992/05/13 21:11:33
--- util.c	1992/05/18 19:00:02
***************
*** 1,13 ****
--- 1,27 ----
  #include <stdio.h>
+ #if __STDC__
+ #include <stdarg.h>
+ #else
  #include <varargs.h>
+ #endif
  #include <pwd.h>
  
  #include "xzwrite.h"
  
+ #undef va_arg
+         /* va_arg aligns list and points past data */
+ #define va_arg(list, mode) ((mode *)(list =\
+  (char *) ((((int)list + (__alignof__(mode)<=4?3:7)) &\
+  (__alignof__(mode)<=4?-4:-8))+sizeof(mode))))[-1]
+ 
  /*VARARGS*/
+ #if __STDC__
+ void Warning(char *first, ...)
+ #else
  void Warning(first, va_alist)
     char	*first;
     va_dcl
+ #endif
  {
       va_list	vp;
       char	*s;
***************
*** 14,30 ****
       
       fputs(first, stderr);
  
       va_start(vp);
!      while ((s = va_arg(vp, char *)) != NULL)
! 	  fputs(s, stderr);
       va_end(vp);
       putc('\n', stderr);
  }
  
  /*VARARGS*/
  void Error(first, va_alist)
     char *first;
     va_dcl
  {
       va_list	vp;
       char	*s;
--- 28,55 ----
       
       fputs(first, stderr);
  
+ #if __STDC__
+      va_start(vp, first);
+ #else
       va_start(vp);
! #endif
!      s = va_arg(vp, char *);
!      while (s != NULL) {
! 	 fputs(s, stderr);
! 	 s = va_arg(vp, char *);
!      }
       va_end(vp);
       putc('\n', stderr);
  }
  
  /*VARARGS*/
+ #if __STDC__
+ void Error(char *first, ...)
+ #else
  void Error(first, va_alist)
     char *first;
     va_dcl
+ #endif
  {
       va_list	vp;
       char	*s;
***************
*** 31,37 ****
--- 56,66 ----
       
       fputs(first, stderr);
  
+ #if __STDC__
+      va_start(vp, first);
+ #else
       va_start(vp);
+ #endif
       while ((s = va_arg(vp, char *)) != NULL)
  	  fputs(s, stderr);
       va_end(vp);
***************
*** 41,49 ****
--- 70,82 ----
  }
  
  /*VARARGS*/
+ #if __STDC__
+ char *Malloc(int n, ...)
+ #else
  char *Malloc(n, va_alist)
     int	n;
     va_dcl
+ #endif
  {
       va_list	vp;
       char	*ptr, *s;
***************
*** 54,60 ****
--- 87,98 ----
  
       fputs("Out of memory: ", stderr);
  
+ #if __STDC__
+      va_start(vp, n);
+ #else
       va_start(vp);
+ #endif
+ 
       while ((s = va_arg(vp, char *)) != NULL)
  	  fputs(s, stderr);
       va_end(vp);
*** 1.1	1992/05/18 18:42:10
--- GetString.c	1992/05/18 19:00:08
***************
*** 84,91 ****
  	  XtVaGetValues(edit, XtNstring, (XtArgVal) &s, NULL);
  	  strncpy(buf, s, len-2);
  	  buf[len-1] = '\0';
! 	  XawAsciiSourceFreeString(edit);
! 	  
  	  return GETSTRING_ACCEPT;
       }
       else
--- 84,92 ----
  	  XtVaGetValues(edit, XtNstring, (XtArgVal) &s, NULL);
  	  strncpy(buf, s, len-2);
  	  buf[len-1] = '\0';
! #ifndef X11R5
! 	  XawAsciiSourceFreeString(edit); /* XXX causes R5 coredump */
! #endif	  
  	  return GETSTRING_ACCEPT;
       }
       else
*** 1.1	1992/05/18 18:45:33
--- edit_window.c	1992/05/18 19:00:09
***************
*** 29,36 ****
  		   NULL);
  
       ret = zeph_send_message(&current_dest, buf);
       XawAsciiSourceFreeString(editor);
! 
       switch (ret) {
       case SEND_OK:
  	  break;
--- 29,37 ----
  		   NULL);
  
       ret = zeph_send_message(&current_dest, buf);
+ #ifndef X11R5
       XawAsciiSourceFreeString(editor);
! #endif
       switch (ret) {
       case SEND_OK:
  	  break;
***************
*** 119,123 ****
--- 120,126 ----
       if (buf != NULL && *buf != '\0')
  	  yank_store(&current_dest, buf);
  
+ #ifndef X11R5
       XawAsciiSourceFreeString(editor);
+ #endif
  }

home help back first fref pref prev next nref lref last post