Changeset: bb50653aff56 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bb50653aff56
Modified Files:
        monetdb5/extras/jaql/json.c
Branch: Jul2012
Log Message:

read_from_stream: fix string termination and buffer resize trigger

off by one when to resize the buffer
don't put \0 in the middle of the buffer when we were appending to it


diffs (31 lines):

diff --git a/monetdb5/extras/jaql/json.c b/monetdb5/extras/jaql/json.c
--- a/monetdb5/extras/jaql/json.c
+++ b/monetdb5/extras/jaql/json.c
@@ -126,7 +126,7 @@ read_from_stream(jsonbat *jb, char **pos
        }
 
        shift = *pos - jb->streambuf;
-       if (*pos == jb->streambuf + jb->streambuflen) {
+       if (*pos == jb->streambuf + jb->streambuflen - 1) {
                size_t rshift = *recall - jb->streambuf;
                char *newbuf = realloc(jb->streambuf, jb->streambuflen += 8096);
                if (newbuf == NULL)
@@ -142,7 +142,8 @@ read_from_stream(jsonbat *jb, char **pos
        sret = mnstr_read(jb->is, *pos, 1, jb->streambuflen - shift - 1);
        if (sret <= 0)
                return 0;
-       jb->streambuf[sret] = '\0';
+       jb->streambuf[shift + sret] = '\0';
+       assert(**pos != '\0');
 
        return sret;
 }
@@ -600,7 +601,7 @@ JSONshredstream(int *kind, int *string, 
        }
 
        jb.streambuflen = 8096;
-       jb.streambuf = malloc(8096);
+       jb.streambuf = malloc(jb.streambuflen);
        jb.streambuf[0] = '\0';
 
        ret = shred_json(&jb, kind, string, integer, doble, array, object, 
name, NULL);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to