Changeset: 801a4ecc0819 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=801a4ecc0819
Modified Files:
        monetdb5/modules/mal/tokenizer.c
Branch: Feb2013
Log Message:

Fix for Bug 3206.

Tokenizer should not wrap ourput strings to language specific syntax sych as 
<../>.


diffs (92 lines):

diff --git a/monetdb5/modules/mal/tokenizer.c b/monetdb5/modules/mal/tokenizer.c
--- a/monetdb5/modules/mal/tokenizer.c
+++ b/monetdb5/modules/mal/tokenizer.c
@@ -449,15 +449,17 @@ TKNZRlocate(Client cntxt, MalBlkPtr mb, 
 }
 
 static str
-takeOid(oid id, str *ret, size_t *totlen, str fcn)
+takeOid(oid id, str *val)
 {
        int i, depth;
        str parts[MAX_TKNZR_DEPTH];
        size_t lngth = 0;
        str s;
+
        if (id >= BATcount(tokenBAT[INDEX])) {
-               throw(MAL, fcn, OPERATION_FAILED " illegal oid");
+               throw(MAL, "tokenizer.takeOid", OPERATION_FAILED " illegal 
oid");
        }
+
        id = *(oid *) Tloc(tokenBAT[INDEX], id);
 
        depth = GET_d(id);
@@ -470,23 +472,16 @@ takeOid(oid id, str *ret, size_t *totlen
                lngth += strlen(parts[i]);
        }
 
-       if (*totlen < lngth + depth + 3) {
-               if (*ret)
-                       GDKfree(*ret);
-               *totlen = lngth + depth + 3;
-               *ret = (str) GDKmalloc(*totlen);
-               if (*ret == NULL)
-                       throw(MAL, "tokenizer.takeOid", OPERATION_FAILED " 
malloc failed");
-       }
-       s = *ret;
-       *s++ = '<';
+       *val = (str) GDKmalloc(lngth+depth+1);
+       s = *val;
+
        for (i = 0; i < depth; i++) {
                strcpy(s, parts[i]);
                s += strlen(parts[i]);
                *s++ = '/';
        }
-       *s++ = '>';
        *s = '\0';
+
        return MAL_SUCCEED;
 }
 
@@ -494,7 +489,6 @@ str
 TKNZRtakeOid(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
        str ret, val = NULL;
-       size_t l = 0;
        oid id;
        (void) cntxt;
        (void) mb;
@@ -503,14 +497,13 @@ TKNZRtakeOid(Client cntxt, MalBlkPtr mb,
                throw(MAL, "tokenizer", "no tokenizer store open");
        }
        id = *(oid *) getArgReference(stk, pci, 1);
-       ret = takeOid(id, &val, &l, "tokenizer.takeOid");
+       ret = takeOid(id, &val);
        if (ret == MAL_SUCCEED) {
                VALset(getArgReference(stk, pci, 0), TYPE_str, val);
        }
        return ret;
 }
 
-
 str
 TKNZRrdf2str(bat *res, bat *bid, bat *map)
 {
@@ -518,7 +511,6 @@ TKNZRrdf2str(bat *res, bat *bid, bat *ma
        BATiter bi, mi;
        BUN p, q;
        str s = NULL;
-       size_t l = 0;
 
        b = BATdescriptor(*bid);
        if (b == NULL) {
@@ -558,7 +550,7 @@ TKNZRrdf2str(bat *res, bat *bid, bat *ma
                        }
                        s = (str) BUNtail(mi, pos);
                } else {
-                       str ret = takeOid(id, &s, &l, "tokenizer.rdf2str");
+                       str ret = takeOid(id, &s);
                        if (ret != MAL_SUCCEED) {
                                BBPunfix(*bid);
                                BBPunfix(*map);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to