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