I found out that in function Rivet_Upload the list of subcommands had 2
entries for 'tempname". In case a 'upload names' command had to be processed
Tcl_GetIndexfromObject mismatches the entry for the 'names' subcommand with
its numerical counterpart. This causes the child process to segfault because
Rivet_Upload tries to get one more argument whereas there is none.

The bug surfaced when I reviewed more closely the output of the failing tests.

i'm going to commit right away. 

-- Massimo

Index: src/apache-2/rivetCore.c
===================================================================
--- src/apache-2/rivetCore.c    (revision 832481)
+++ src/apache-2/rivetCore.c    (working copy)
@@ -836,7 +836,6 @@
        "filename",
        "tempname",
        "names",
-       "tempname",
        NULL
     };
 
@@ -848,8 +847,8 @@
        SIZE,
        TYPE,
        FILENAME,
-       NAMES,
-       TEMPNAME
+       TEMPNAME,
+       NAMES
     };
 
     rivet_interp_globals *globals = Tcl_GetAssocData(interp, "rivet", NULL);
@@ -863,7 +862,8 @@
 
     /* If it's any of these, we need to find a specific name. */
 
-    /* Excluded cases are EXISTS and NAMES. */
+    /* Excluded case is NAMES. */
+
     if ((enum subcommand)subcommandindex == CHANNEL    ||
        (enum subcommand)subcommandindex == SAVE        ||
        (enum subcommand)subcommandindex == DATA        ||


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to