Update of /cvsroot/monetdb/pathfinder/runtime
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv18170

Modified Files:
        xrpc_server.mx 
Log Message:
- wrong variable was used as the index into the pre_sizeT array
- simplify code a bit



U xrpc_server.mx
Index: xrpc_server.mx
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_server.mx,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -d -r1.61 -r1.62
--- xrpc_server.mx      7 Apr 2008 12:56:06 -0000       1.61
+++ xrpc_server.mx      7 Apr 2008 13:45:43 -0000       1.62
@@ -348,28 +348,6 @@
 }
 
 /**
- * Find the 'pre' value of the first node between 'start_pre' and
- * 'end_pre' (inclusive), which kind is 'elem_kind'.
- *
- * @return the 'pre' value of this node, or
- *         0 if such node can not be found.
- */
-static oid
-get_elem_pre(oid start_pre,
-             oid end_pre,
-             char elem_kind,
-             char *pre_kind)
-{
-    oid i;
-
-    for (i = start_pre; i <= end_pre; i++) {
-        if (pre_kind[i] == elem_kind)
-            return i;
-    }
-    return 0;
-}
-
-/**
  * Given the pre value of a type node, return the name of the type node
  * as a string in the form 'ns_uri:loc'.
  *
@@ -631,7 +609,7 @@
             for(tpe_node_pre = seq_node_pre+1, k=1; tpe_node_pre < 
next_seq_node_pre;
                     tpe_node_pre = next_tpe_node_pre, k++) {
                 /* skip possible empty text nodes, without further checking */
-                tpe_node_pre += (pre_kindT[seq_node_pre] == ELEMENT ? 0 : 1);
+                tpe_node_pre += (pre_kindT[tpe_node_pre] == ELEMENT ? 0 : 1);
                 next_tpe_node_pre = tpe_node_pre + pre_sizeT[tpe_node_pre]+1;
                 /* advance our cursor in attr_own */
                 while(ao_ptr < nattrs && attr_ownT[ao_ptr] < tpe_node_pre) 
ao_ptr++;
@@ -728,18 +706,12 @@
                         return GDK_FAIL;
                     }
 
-                    if(strcmp(argtpe[nr_args], "xs:element") == 0) {
-                        val_node_pre = get_elem_pre(tpe_node_pre+1,
-                                (tpe_node_pre+pre_sizeT[tpe_node_pre]), 
ELEMENT, pre_kindT);
-                    } else if (strcmp(argtpe[nr_args], "xs:text") == 0) {
-                        val_node_pre = get_elem_pre(tpe_node_pre+1,
-                                (tpe_node_pre+pre_sizeT[tpe_node_pre]), TEXT, 
pre_kindT);
-                    } else if (strcmp(argtpe[nr_args], "xs:comment") == 0) {
-                        val_node_pre = get_elem_pre(tpe_node_pre+1,
-                                (tpe_node_pre+pre_sizeT[tpe_node_pre]), 
COMMENT, pre_kindT);
-                    } else if(strcmp(argtpe[nr_args], 
"xs:processing-instruction") == 0) {
-                        val_node_pre = get_elem_pre(tpe_node_pre+1,
-                                (tpe_node_pre+pre_sizeT[tpe_node_pre]), PI, 
pre_kindT);
+                    if(strcmp(argtpe[nr_args], "xs:element") == 0 ||
+                       strcmp(argtpe[nr_args], "xs:text") == 0 ||
+                       strcmp(argtpe[nr_args], "xs:comment") == 0 ||
+                       strcmp(argtpe[nr_args], "xs:processing-instruction") == 
0) {
+                        val_node_pre = tpe_node_pre + 1;
+                        val_node_pre += (pre_kindT[val_node_pre] == ELEMENT ? 
0 : 1);
                     } else if (strcmp(argtpe[nr_args], "xs:document") == 0) {
                         val_node_pre = tpe_node_pre;
                         pre_kindT[val_node_pre] = 4;
@@ -754,16 +726,6 @@
                         return GDK_FAIL;
                     }
 
-                    if (val_node_pre == 0) {
-                        snprintf(errstr, 1024, "XRPC request: "
-                                "iter["LLFMT"]/param["LLFMT"]/value["LLFMT"] "
-                                "does not contain a *node* value",
-                                i+1, j+1, k);
-                        send_err(out, ERR404, "env:Sender", errstr);
-                        clean_up(argcnt,argtpe,argval,iterc,nr_args);
-                        return GDK_FAIL;
-                    }
-
                     snprintf(argval[nr_args], 32, OIDFMT, val_node_pre);
                     frag_root = BUNappend(frag_root, (ptr)&val_node_pre, TRUE);
                     isSimpleParam = 0;


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to