[365] in Zephyr_Bugs
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(¤t_dest, buf);
XawAsciiSourceFreeString(editor);
!
switch (ret) {
case SEND_OK:
break;
--- 29,37 ----
NULL);
ret = zeph_send_message(¤t_dest, buf);
+ #ifndef X11R5
XawAsciiSourceFreeString(editor);
! #endif
switch (ret) {
case SEND_OK:
break;
***************
*** 119,123 ****
--- 120,126 ----
if (buf != NULL && *buf != '\0')
yank_store(¤t_dest, buf);
+ #ifndef X11R5
XawAsciiSourceFreeString(editor);
+ #endif
}