diff --git a/motif/server/datatrans.c b/motif/server/datatrans.c index 61abe5a964b0480344e1bf8430d43aa01a84c758..99aa42330c4d7900866e270ab8350db63f36d452 100644 --- a/motif/server/datatrans.c +++ b/motif/server/datatrans.c @@ -1,6 +1,6 @@ /* - $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/motif/server/datatrans.c,v 1.5 1997/08/22 20:49:32 pw Exp $ + $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/motif/server/datatrans.c,v 1.6 1997/12/31 18:57:53 pw Exp $ This code was written as part of the CMU Common Lisp project at Carnegie Mellon University, and has been placed in the public domain. @@ -378,6 +378,8 @@ void message_read_resource_names(message_t message,ResourceList *list, list->length = length; if( length>0 ) { list->args = (ArgList)XtMalloc(length*sizeof(Arg)); + register_garbage(list->args, GarbageData); + /* Allocate region to store data into */ data = (long *)XtMalloc( sizeof(long)*length ); bzero(data,sizeof(long)*length); diff --git a/motif/server/requests.c b/motif/server/requests.c index 92ffd967800edcbbe0b98230c228b7693f029ec7..9d65702b0198b9e0d40fde1ec0e49998f4384787 100644 --- a/motif/server/requests.c +++ b/motif/server/requests.c @@ -1,6 +1,6 @@ /* - $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/motif/server/requests.c,v 1.4 1996/05/08 14:15:40 ram Exp $ + $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/motif/server/requests.c,v 1.5 1997/12/31 18:57:55 pw Exp $ This code was written as part of the CMU Common Lisp project at Carnegie Mellon University, and has been placed in the public domain. @@ -27,14 +27,29 @@ Garbage garbage_list = NULL; #include "Interface.h" +static int +already_garbage(void*stuff) +{ + Garbage current = garbage_list; + while( current ) { + if (current->junk == (char*)stuff){ + fprintf(stderr,"Redundant add to garbage list.\n"); + return 1; + } + current = current->next; + } + return 0; +} + void register_garbage(void *stuff,garbage_kind kind) { - Garbage garbage = XtNew(struct garbage_node); - - garbage->junk = (char *)stuff; - garbage->kind = kind; - garbage->next = garbage_list; - garbage_list = garbage; + if (!already_garbage(stuff)) { + Garbage garbage = XtNew(struct garbage_node); + garbage->junk = (char *)stuff; + garbage->kind = kind; + garbage->next = garbage_list; + garbage_list = garbage; + } } void cleanup_garbage() diff --git a/motif/server/resources.c b/motif/server/resources.c index 284295f76d4af6bab2cfcc4c1014a8bdbc1dab7f..5326114424f1116970d28ad3238fa7fdd83e4804 100644 --- a/motif/server/resources.c +++ b/motif/server/resources.c @@ -1,6 +1,6 @@ /* - $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/motif/server/resources.c,v 1.2 1994/10/27 17:16:51 ram Exp $ + $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/motif/server/resources.c,v 1.3 1997/12/31 18:57:58 pw Exp $ This code was written as part of the CMU Common Lisp project at Carnegie Mellon University, and has been placed in the public domain. @@ -33,7 +33,6 @@ int RXtSetValues(message_t message) toolkit_read_value(message,&resources,ExtRResourceList); XtSetValues(w,resources.args,resources.length); - register_garbage(resources.args,GarbageData); } int RXtGetValues(message_t message) @@ -53,7 +52,6 @@ int RXtGetValues(message_t message) message_write_resource_list(reply,&resources,resource_list_tag); message_send(client_socket,reply); message_free(reply); - register_garbage(resources.args,GarbageData); must_confirm = False; }