% cd /usr/local/ilu/src % patch -p < /usr/local/ilu/src/this-patch [...various output from the patch program...] %
*** stubbers/c/names.c.original Sat Sep 27 20:46:30 1997 --- stubbers/c/names.c Sat Sep 27 20:46:47 1997 *************** *** 270,276 **** string n; if ((n = name_lang_name (type->name, "C-typecode")) == NULL) { ! char buf[ 500 ]; char *tname; tname = c_type_name(type); --- 270,276 ---- string n; if ((n = name_lang_name (type->name, "C-typecode")) == NULL) { ! static char buf[ 500 ]; char *tname; tname = c_type_name(type);
*** stubbers/idl/idlparser.c.orig Thu Sep 25 14:35:55 1997 --- stubbers/idl/idlparser.c Mon Sep 29 10:47:43 1997 *************** *** 79,85 **** /* tunable parameters. For 2.0a10 compatibility, all should be 0 */ #define LOCAL_TYPES_HAVE_REP_IDS 0 ! #define HAVE_SCOPING 0 #define HAVE_STRNDUP 0 /* Make the Bison parser produce better error messages */ --- 79,85 ---- /* tunable parameters. For 2.0a10 compatibility, all should be 0 */ #define LOCAL_TYPES_HAVE_REP_IDS 0 ! #define HAVE_SCOPING 1 #define HAVE_STRNDUP 0 /* Make the Bison parser produce better error messages */ *** stubbers/parser/util.c.orig Thu Sep 25 14:29:52 1997 --- stubbers/parser/util.c Mon Sep 29 10:57:02 1997 *************** *** 80,86 **** fprintf (stderr, "Couldn't find interface \"%s\".\n", s->name); exit(1); } ! else fprintf (info->file, ",\n%s and \"%s\" of %s", info->prefix, i->filename, ModTime(i->filename)); } --- 80,86 ---- fprintf (stderr, "Couldn't find interface \"%s\".\n", s->name); exit(1); } ! if (i->filename) fprintf (info->file, ",\n%s and \"%s\" of %s", info->prefix, i->filename, ModTime(i->filename)); }
*** runtime/java/ilujsoft.mak.orig Thu Sep 25 14:31:46 1997 --- runtime/java/ilujsoft.mak Mon Sep 29 17:29:58 1997 *************** *** 477,483 **** !IF "$(CFG)" == "Win32 Release" DEP_CPP_ILUJA=\ ! "\runtime\java\build\xerox_ilu_ilucall.h"\ "$(ILUSRC)\runtime\java\build\xerox_ilu_iluclassrep.h"\ "$(ILUSRC)\runtime\java\build\xerox_ilu_ilugcclient.h"\ "$(ILUSRC)\runtime\java\build\xerox_ilu_ilumethodrep.h"\ --- 477,483 ---- !IF "$(CFG)" == "Win32 Release" DEP_CPP_ILUJA=\ ! "$(ILUSRC)\runtime\java\build\xerox_ilu_ilucall.h"\ "$(ILUSRC)\runtime\java\build\xerox_ilu_iluclassrep.h"\ "$(ILUSRC)\runtime\java\build\xerox_ilu_ilugcclient.h"\ "$(ILUSRC)\runtime\java\build\xerox_ilu_ilumethodrep.h"\
*** runtime/java/Imakefile.orig Thu Sep 25 14:31:32 1997 --- runtime/java/Imakefile Tue Sep 30 09:28:51 1997 *************** *** 34,40 **** all:: compiled extraSources @@\ @@\ compiled : sources @@\ ! CLASSPATH="$(JAVA_CLASS_DIR)"; export CLASSPATH ; $(JAVAC) -g -d "$(JAVA_CLASS_DIR)" sources @@\ @@\ install:: compiled @@\ @sh -c 'for i in compiled; do \ @@\ --- 34,40 ---- all:: compiled extraSources @@\ @@\ compiled : sources @@\ ! CLASSPATH="$(JAVA_CLASS_DIR):$(CLASSPATH)"; export CLASSPATH ; $(JAVAC) -g -d "$(JAVA_CLASS_DIR)" sources @@\ @@\ install:: compiled @@\ @sh -c 'for i in compiled; do \ @@\ *************** *** 60,67 **** @@\ stubfiles : className.java @@\ $(RM) $@ @@\ ! CLASSPATH="$(JAVA_CLASS_DIR)"; export CLASSPATH ; $(JAVAH) -d stubdir -stubs packagePrefix.className @@\ ! CLASSPATH="$(JAVA_CLASS_DIR)"; export CLASSPATH ; $(JAVAH) -d stubdir packagePrefix.className @@\ @@\ CleanTarget(stubfiles) --- 60,67 ---- @@\ stubfiles : className.java @@\ $(RM) $@ @@\ ! CLASSPATH="$(JAVA_CLASS_DIR):$(CLASSPATH)"; export CLASSPATH ; $(JAVAH) -d stubdir -stubs packagePrefix.className @@\ ! CLASSPATH="$(JAVA_CLASS_DIR):$(CLASSPATH)"; export CLASSPATH ; $(JAVAH) -d stubdir packagePrefix.className @@\ @@\ CleanTarget(stubfiles) *************** *** 78,84 **** @@\ stubfile : className.java @@\ $(RM) $@ @@\ ! CLASSPATH="$(JAVA_CLASS_DIR)"; export CLASSPATH ; $(JAVAH) -d stubdir packagePrefix.className @@\ @@\ CleanTarget(stubfile) --- 78,84 ---- @@\ stubfile : className.java @@\ $(RM) $@ @@\ ! CLASSPATH="$(JAVA_CLASS_DIR):$(CLASSPATH)"; export CLASSPATH ; $(JAVAH) -d stubdir packagePrefix.className @@\ @@\ CleanTarget(stubfile) *************** *** 93,99 **** @@\ stubfile : fileName @@\ $(RM) $@ @@\ ! CLASSPATH="$(JAVA_CLASS_DIR)"; export CLASSPATH ; $(JAVAH) -d stubdir className @@\ @@\ CleanTarget(stubfile) --- 93,99 ---- @@\ stubfile : fileName @@\ $(RM) $@ @@\ ! CLASSPATH="$(JAVA_CLASS_DIR):$(CLASSPATH)"; export CLASSPATH ; $(JAVAH) -d stubdir className @@\ @@\ CleanTarget(stubfile) *************** *** 129,138 **** */ make.gnh: ilunative.in ! CLASSPATH="$(JAVA_CLASS_DIR)"; export CLASSPATH ; $(JAVAC) -d "$(JAVA_CLASS_DIR)" gnh.java rm -f ilunative.h rm -f ilunative.c ! CLASSPATH="$(JAVA_CLASS_DIR)"; export CLASSPATH ; $(JAVA_HOME)/bin/java xerox.ilu.tools.gnh -oni ilunative.in rm -f $(JAVA_CLASS_DIR)/xerox/ilu/tools/gnh.class touch make.gnh --- 129,138 ---- */ make.gnh: ilunative.in ! CLASSPATH="$(JAVA_CLASS_DIR):$(CLASSPATH)"; export CLASSPATH ; $(JAVAC) -d "$(JAVA_CLASS_DIR)" gnh.java rm -f ilunative.h rm -f ilunative.c ! CLASSPATH="$(JAVA_CLASS_DIR):$(CLASSPATH)"; export CLASSPATH ; $(JAVA_HOME)/bin/java xerox.ilu.tools.gnh -oni ilunative.in rm -f $(JAVA_CLASS_DIR)/xerox/ilu/tools/gnh.class touch make.gnh
*** runtime/c/ilucstub.h.orig Thu Sep 25 14:32:01 1997 --- runtime/c/ilucstub.h Wed Oct 1 11:10:04 1997 *************** *** 381,387 **** } _ILU_C_ParmDesc; ILU_RUNTIME_PUBLIC void ! _ILU_C_VectorCall (ilu_Class class, ilu_Method method, _ILU_C_ExceptionDescription *evec, ILU_C_Object *discriminant, ILU_C_ENVIRONMENT *status, --- 381,387 ---- } _ILU_C_ParmDesc; ILU_RUNTIME_PUBLIC void ! _ILU_C_VectorCall (ilu_Class pclass, ilu_Method method, _ILU_C_ExceptionDescription *evec, ILU_C_Object *discriminant, ILU_C_ENVIRONMENT *status,
*** stubbers/c/cheaders.c.orig Thu Sep 25 14:29:54 1997 --- stubbers/c/cheaders.c Wed Oct 1 15:27:45 1997 *************** *** 866,872 **** fprintf (c->file, "void %s_Every (%s *h, void (*f)(%s%s, void *), void *);\n", tn, tn, st, nr ? "" : "*"); fprintf (c->file, "void %s_Append (%s *h, %s item);\n", tn, tn, st); fprintf (c->file, "void %s_Push (%s *h, %s item);\n", tn, tn, st); ! fprintf (c->file, "void %s_Pop (%s *h, %s item);\n", tn, tn, st); fprintf (c->file, "CORBA_unsigned_long %s_Length (%s *);\n", tn, tn); fprintf (c->file, "%s * %s_Nth (%s *, CORBA_unsigned_long);\n", rtn, tn, tn); fprintf (c->file, "%s * %s_Create (CORBA_unsigned_long /* size */, %s %s /* init val */);\n", tn, tn, st, (nr) ? "" : "*"); --- 866,872 ---- fprintf (c->file, "void %s_Every (%s *h, void (*f)(%s%s, void *), void *);\n", tn, tn, st, nr ? "" : "*"); fprintf (c->file, "void %s_Append (%s *h, %s item);\n", tn, tn, st); fprintf (c->file, "void %s_Push (%s *h, %s item);\n", tn, tn, st); ! fprintf (c->file, "void %s_Pop (%s *h, %s %sitem);\n", tn, tn, st, (nr) ? "" : "*"); fprintf (c->file, "CORBA_unsigned_long %s_Length (%s *);\n", tn, tn); fprintf (c->file, "%s * %s_Nth (%s *, CORBA_unsigned_long);\n", rtn, tn, tn); fprintf (c->file, "%s * %s_Create (CORBA_unsigned_long /* size */, %s %s /* init val */);\n", tn, tn, st, (nr) ? "" : "*"); *** stubbers/c/code.c.orig Thu Sep 25 14:29:55 1997 --- stubbers/c/code.c Wed Oct 1 15:27:29 1997 *************** *** 1960,1969 **** rtn); fprintf(f, "}\n\n"); ! fprintf(f, "void %s_Pop (%s *h, %s item)\n{\n", tn, tn, st); fprintf(f, " _ILU_C_PopGeneric (%s, %s, sizeof(%s));\n}\n\n", "(ILU_C_Sequence) h", ! (hasReferent) ? "(char *) item" : "(char *) &item", rtn); fprintf(f, "CORBA_unsigned_long %s_Length (%s *h)\n{\n", tn, tn); --- 1960,1969 ---- rtn); fprintf(f, "}\n\n"); ! fprintf(f, "void %s_Pop (%s *h, %s %sitem)\n{\n", tn, tn, st, (hasReferent) ? "" : "*"); fprintf(f, " _ILU_C_PopGeneric (%s, %s, sizeof(%s));\n}\n\n", "(ILU_C_Sequence) h", ! "(char *) item", rtn); fprintf(f, "CORBA_unsigned_long %s_Length (%s *h)\n{\n", tn, tn);
*** 1.149 1997/09/23 17:48:13 --- runtime/kernel/iiop.c 1997/10/07 02:47:51 *************** *** 522,527 **** --- 522,529 ---- p->objKeyLen = 0; p->principal = NIL; p->principalLen = 0; + p->short_char_codeset = ilu_IIOP_NATIVE_SHORT_CHAR_CODE_SET_ID; + p->char_codeset = 0; return (p); } *************** *** 1725,1732 **** *mstid = _ilu_Strdup(ior->type_id); stat = parse_ILU_Profile (&ior->Profile[i], ih, sid, NIL, cinfo, cinfolen, err); ! if (stat) break; } } if (! stat) { --- 1727,1739 ---- *mstid = _ilu_Strdup(ior->type_id); stat = parse_ILU_Profile (&ior->Profile[i], ih, sid, NIL, cinfo, cinfolen, err); ! if (stat) { ! if ((short_char_codeset != NIL) && (*short_char_codeset == 0)) ! *short_char_codeset = ilu_IIOP_NATIVE_SHORT_CHAR_CODE_SET_ID; ! if ((char_codeset != NIL) && (*char_codeset == 0)) ! *char_codeset = ilu_IIOP_NATIVE_CHAR_CODE_SET_ID; break; + }; } } if (! stat) { *************** *** 1754,1759 **** --- 1761,1769 ---- /* XXX -- if no character codesets were specified, use defaults */ if ((short_char_codeset != NIL) && (*short_char_codeset == 0)) *short_char_codeset = ilu_IIOP_NATIVE_SHORT_CHAR_CODE_SET_ID; + /* XXX -- this is wrong; it should be 0, but that means that we should + check all interfaces of the object being reified to see that they + don't use wchar or wstring, and that's too expensive */ if ((char_codeset != NIL) && (*char_codeset == 0)) *char_codeset = ilu_IIOP_NATIVE_CHAR_CODE_SET_ID; *************** *** 1799,1804 **** --- 1809,1818 ---- { if (((short_char_codeset != ilu_IIOP_NATIVE_SHORT_CHAR_CODE_SET_ID) && (codeset_err = ilu_iom_short_char_codeset)) || + /* XXX - this next clause is wrong; we should really allow a value + of 0 as well, but that means we'd have to grovel over the interfaces + of the object to ensure they don't use wchar or wstring, and that's + too painful. */ ((char_codeset != ilu_IIOP_NATIVE_CHAR_CODE_SET_ID) && (codeset_err = ilu_iom_char_codeset))) { ilu_free(sid); *************** *** 2051,2056 **** --- 2065,2074 ---- ilu_free(p); if (((short_char_codeset != ilu_IIOP_NATIVE_SHORT_CHAR_CODE_SET_ID) && (codeset_err = ilu_iom_short_char_codeset)) || + /* XXX - this next clause is wrong; we should really allow a value + of 0 as well, but that means we'd have to grovel over the interfaces + of the object to ensure they don't use wchar or wstring, and that's + too painful. */ ((char_codeset != ilu_IIOP_NATIVE_CHAR_CODE_SET_ID) && (codeset_err = ilu_iom_char_codeset))) { ilu_free(sid);
*** runtime/python/iluPrmodule.c.orig Thu Sep 25 14:32:03 1997 --- runtime/python/iluPrmodule.c Thu Oct 23 13:54:20 1997 *************** *** 1520,1526 **** } static void ! setupGCCleanupAlarm (void) { if (gcAlarmSet) return; --- 1520,1526 ---- } static void ! setupGCCleanupAlarm (ilu_boolean b_calling_from_kernel) { if (gcAlarmSet) return; *************** *** 1531,1537 **** _ilu_Assert(gcAlarm != ILU_NIL, "failed to create GC alarm"); #ifdef ILU_PYTHON_THREADS ! if (ilupython_threaded_operation) { CALL_KERNEL(ilupython_threaded_operation, ilu_SetAlarm(gcAlarm, ilu_FineTime_Add(ilu_FineTime_Now(), plus1Minute), bootstrapAlarm, (void *)&gc_alarm_rock)); } --- 1531,1543 ---- _ilu_Assert(gcAlarm != ILU_NIL, "failed to create GC alarm"); #ifdef ILU_PYTHON_THREADS ! /* if we're running threaded and we're Not calling from the kernel i.e. calling from ilumod_Delete, ! we know we should be (un)grabbing the interpreter lock via the CALL_KERNEL ! macro. If we are calling from the kernel, i.e. from trackKernelInterest, ! we don't want to use CALL_KERNEL because it will release the lock, do the call ! and then grab the lock, preventing anything else from using the interpreter. ! */ ! if (ilupython_threaded_operation && !b_calling_from_kernel) { CALL_KERNEL(ilupython_threaded_operation, ilu_SetAlarm(gcAlarm, ilu_FineTime_Add(ilu_FineTime_Now(), plus1Minute), bootstrapAlarm, (void *)&gc_alarm_rock)); } *************** *** 1609,1615 **** gcList = PyList_New(1); addObjToGCList (gcList, (PyObject *) inst); ! setupGCCleanupAlarm(); } Py_DECREF(inst); /* --- 1615,1621 ---- gcList = PyList_New(1); addObjToGCList (gcList, (PyObject *) inst); ! setupGCCleanupAlarm(ilu_TRUE); } Py_DECREF(inst); /* *************** *** 2208,2214 **** gcList = PyList_New(1); addObjToGCList (gcList, (PyObject *) inst); ! setupGCCleanupAlarm(); } #ifdef ILU_OLD_PYTHON_GC_BEHAVIOR Py_DECREF(inst); --- 2214,2220 ---- gcList = PyList_New(1); addObjToGCList (gcList, (PyObject *) inst); ! setupGCCleanupAlarm(ilu_FALSE); } #ifdef ILU_OLD_PYTHON_GC_BEHAVIOR Py_DECREF(inst);
*** 1.21 1996/11/08 03:56:12 --- stubbers/lisp/lisp.c 1997/10/24 02:30:10 *************** *** 213,219 **** char **filename; extern Interface GetInterface(string, string); ! ProgramName = iluparser_GetProgramName(av[0]); if (ac < 2) { --- 213,220 ---- char **filename; extern Interface GetInterface(string, string); ! if ((ProgramName = iluparser_GetProgramName(av[0])) == NULL) ! ProgramName = av[0]; if (ac < 2) { *** 1.13 1997/08/30 00:38:32 --- stubbers/python/isl2python.c 1997/10/24 02:29:15 *************** *** 249,255 **** int optind = 1; char * pathDir = NULL; ! programName = iluparser_GetProgramName(argv[0]); while (optind < argc && argv[optind][0] == '-') { --- 249,256 ---- int optind = 1; char * pathDir = NULL; ! if ((programName = iluparser_GetProgramName(argv[0])) == NULL) ! programName = argv[0]; while (optind < argc && argv[optind][0] == '-') {
*** 1.1 1997/08/05 06:17:40 --- etc/CosNaming/CosNaming.idl 1997/10/24 03:00:29 *************** *** 13,16 **** module CosNaming { --- 13,18 ---- + + #pragma prefix "omg.org" module CosNaming {
*** 1.6 1997/09/16 23:50:47 --- runtime/guile/Imakefile 1997/10/24 02:09:40 *************** *** 21,27 **** NormalObjectRule() ! MkdirTarget($(ILUHOME)/guile) ILU_SCHEME_LIB = libilu-guile.a --- 21,27 ---- NormalObjectRule() ! MkdirTarget($(DESTDIR)/guile) ILU_SCHEME_LIB = libilu-guile.a
*** 1.35 1997/09/10 01:42:43 --- examples/test1/Imakefile 1997/10/24 03:48:22 *************** *** 2,8 **** /* Last edited by Mike Spreitzer June 5, 1996 5:44 pm PDT */ all:: Test1.isl #ifdef ADD_COMMONLISP_LANGUAGE load-lisp-example.lisp : load-lisp-example.lisp.dist -rm -f load-lisp-example.lisp --- 2,11 ---- /* Last edited by Mike Spreitzer June 5, 1996 5:44 pm PDT */ all:: Test1.isl + MkdirTarget($(DESTDIR)/examples) + MkdirTarget($(DESTDIR)/examples/test1) + #ifdef ADD_COMMONLISP_LANGUAGE load-lisp-example.lisp : load-lisp-example.lisp.dist -rm -f load-lisp-example.lisp *************** *** 13,21 **** InstallRO(client.lisp server.lisp load-lisp-example.lisp, $(DESTDIR)/examples/test1) CleanTarget(load-lisp-example.lisp) #endif - - MkdirTarget($(DESTDIR)/examples) - MkdirTarget($(DESTDIR)/examples/test1) InstallRO(Test1.isl Test2.isl Test3.isl, $(DESTDIR)/examples/test1) InstallRO(clnt.c clnt.h clntu.c clntw.c srvrw.c srvr.c srvr.h srvru.c test1srv.key test1srv.crt, $(DESTDIR)/examples/test1) --- 16,21 ----
*** runtime/python/iluPrmodule.c.orig Mon Oct 27 10:35:06 1997 --- runtime/python/iluPrmodule.c Mon Oct 27 10:51:41 1997 *************** *** 1537,1546 **** we don't want to use CALL_KERNEL because it will release the lock, do the call and then grab the lock, preventing anything else from using the interpreter. */ ! if (ilupython_threaded_operation && !b_calling_from_kernel) ! { ! CALL_KERNEL(ilupython_threaded_operation, ilu_SetAlarm(gcAlarm, ilu_FineTime_Add(ilu_FineTime_Now(), plus1Minute), bootstrapAlarm, (void *)&gc_alarm_rock)); } else #endif /* ILU_PYTHON_THREADS */ { --- 1537,1550 ---- we don't want to use CALL_KERNEL because it will release the lock, do the call and then grab the lock, preventing anything else from using the interpreter. */ ! if (ilupython_threaded_operation){ ! if (!b_calling_from_kernel) { ! CALL_KERNEL(ilupython_threaded_operation, ! ilu_SetAlarm(gcAlarm, ilu_FineTime_Add(ilu_FineTime_Now(), plus1Minute), bootstrapAlarm, (void *)&gc_alarm_rock)); } + else + ilu_SetAlarm (gcAlarm, ilu_FineTime_Add(ilu_FineTime_Now(), plus1Minute), bootstrapAlarm, (void *)&gc_alarm_rock); + } else #endif /* ILU_PYTHON_THREADS */ {
When the reply of the first method call of an ILU server program that uses the IIOP protocol requires marshalling of a NIL object the program enters an infinite sleep loop.
This happens because the function FindIORForObject in iiop.c returns nil when the ObjectIors variable is nil. When called with a NIL object it can happen that this variable is nil, but it should still return &NilObjectIOR instead of nil.
Here is a patch that fixes the bug:
*** runtime/kernel/iiop.c 1997/10/07 22:57:51 1.6 --- runtime/kernel/iiop.c 1997/10/29 21:21:04 1.7 *************** *** 2102,2111 **** { iorhash ior; - if (ObjectIors == NIL) - return NIL; if (h == NIL) return &NilObjectIOR; if ((ior = (iorhash) ilu_hash_FindInTable(ObjectIors, h)) == NIL) return NIL; if ((h->ob_server != ior->s) OR --- 2102,2111 ---- { iorhash ior; if (h == NIL) return &NilObjectIOR; + if (ObjectIors == NIL) + return NIL; if ((ior = (iorhash) ilu_hash_FindInTable(ObjectIors, h)) == NIL) return NIL; if ((h->ob_server != ior->s) OR