Changeset: ec6c915d1d89 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ec6c915d1d89
Modified Files:
monetdb5/modules/mal/tablet.c
sql/backends/monet5/sql_result.c
Branch: resultset
Log Message:
Defense initialization and missing intialization
mvc_import_table should properly initialze the receiving bat structure.
Zero all relevant structures, avoiding garbage.
diffs (163 lines):
diff --git a/monetdb5/modules/mal/tablet.c b/monetdb5/modules/mal/tablet.c
--- a/monetdb5/modules/mal/tablet.c
+++ b/monetdb5/modules/mal/tablet.c
@@ -517,8 +517,8 @@ static int
output_file_default(Tablet *as, BAT *order, stream *fd)
{
int len = BUFSIZ, locallen = BUFSIZ, res = 0;
- char *buf = GDKmalloc(len);
- char *localbuf = GDKmalloc(len);
+ char *buf = GDKzalloc(len);
+ char *localbuf = GDKzalloc(len);
BUN p, q;
BUN i = 0;
BUN offset = BUNfirst(order) + as->offset;
@@ -554,8 +554,8 @@ static int
output_file_dense(Tablet *as, stream *fd)
{
int len = BUFSIZ, locallen = BUFSIZ, res = 0;
- char *buf = GDKmalloc(len);
- char *localbuf = GDKmalloc(len);
+ char *buf = GDKzalloc(len);
+ char *localbuf = GDKzalloc(len);
BUN i = 0;
if (buf == NULL || localbuf == NULL) {
@@ -585,7 +585,7 @@ static int
output_file_ordered(Tablet *as, BAT *order, stream *fd, oid base)
{
int len = BUFSIZ, res = 0;
- char *buf = GDKmalloc(len);
+ char *buf = GDKzalloc(len);
BUN p, q;
BUN i = 0;
BUN offset = BUNfirst(order) + as->offset;
@@ -751,7 +751,7 @@ SQLload_error(READERtask *task, lng idx)
else
sz += task->seplen;
- line = (str) GDKmalloc(sz + task->rseplen + 1);
+ line = (str) GDKzalloc(sz + task->rseplen + 1);
if (line == 0) {
tablet_error(task, idx, int_nil, "SQLload malloc error",
"SQLload_error");
return 0;
@@ -1012,7 +1012,7 @@ SQLworker(void *arg)
Thread thr;
thr = THRnew("SQLworker");
- GDKsetbuf(GDKmalloc(GDKMAXERRLEN)); /* where to leave errors */
+ GDKsetbuf(GDKzalloc(GDKMAXERRLEN)); /* where to leave errors */
GDKerrbuf[0] = 0;
task->errbuf = GDKerrbuf;
#ifdef _DEBUG_TABLET_
diff --git a/sql/backends/monet5/sql_result.c b/sql/backends/monet5/sql_result.c
--- a/sql/backends/monet5/sql_result.c
+++ b/sql/backends/monet5/sql_result.c
@@ -36,7 +36,7 @@
if (*Buf) \
GDKfree(*Buf); \
*len = 5; \
- *Buf = GDKmalloc(*len); \
+ *Buf = GDKzalloc(*len); \
if (*Buf == NULL) { \
GDKerror("Allocation failed\n"); \
return 0; \
@@ -69,7 +69,7 @@
if (*Buf) \
GDKfree(*Buf); \
*len = l+1; \
- *Buf = GDKmalloc(*len); \
+ *Buf = GDKzalloc(*len); \
if (*Buf == NULL) { \
GDKerror("Allocation failed\n"); \
return 0; \
@@ -134,7 +134,7 @@ sql_time_tostr(void *TS_RES, char **buf,
if (*len < 4 || *buf == NULL) {
if (*buf)
GDKfree(*buf);
- *buf = (str) GDKmalloc(*len = 4);
+ *buf = (str) GDKzalloc(*len = 4);
if (*buf == NULL) {
GDKerror("Allocation failed\n");
return 0;
@@ -152,7 +152,7 @@ sql_time_tostr(void *TS_RES, char **buf,
if (*len < len1 + 8) {
if (*buf)
GDKfree(*buf);
- *buf = (str) GDKmalloc(*len = len1 + 8);
+ *buf = (str) GDKzalloc(*len = len1 + 8);
if (*buf == NULL) {
GDKerror("Allocation failed\n");
return 0;
@@ -203,7 +203,7 @@ sql_timestamp_tostr(void *TS_RES, char *
if (*len < len1 + len2 + 8) {
if (*buf)
GDKfree(*buf);
- *buf = (str) GDKmalloc(*len = len1 + len2 + 8);
+ *buf = (str) GDKzalloc(*len = len1 + len2 + 8);
if (*buf == NULL) {
GDKerror("Allocation failed\n");
return 0;
@@ -454,7 +454,7 @@ bat_max_hgelength(BAT *b)
return NULL; \
r = c->data; \
if (r == NULL && \
- (r = GDKmalloc(sizeof(X))) == NULL) \
+ (r = GDKzalloc(sizeof(X))) == NULL) \
return NULL; \
c->data = r; \
if (neg) \
@@ -536,7 +536,7 @@ sec_frstr(Column *c, int type, const cha
if (*s)
return NULL;
r = c->data;
- if (r == NULL && (r = (lng *) GDKmalloc(sizeof(lng))) == NULL)
+ if (r == NULL && (r = (lng *) GDKzalloc(sizeof(lng))) == NULL)
return NULL;
c->data = r;
if (neg)
@@ -634,7 +634,7 @@ static int
if (l + 3 > *len) {
GDKfree(*buf);
*len = 2 * l + 3;
- *buf = GDKmalloc(*len);
+ *buf = GDKzalloc(*len);
if (*buf == NULL) {
GDKerror("Allocation failed\n");
return 0;
@@ -683,6 +683,8 @@ mvc_import_table(Client cntxt, BAT ***ba
BUN cnt = 0;
str msg = MAL_SUCCEED;
+ *bats =0; // initialize the receiver
+
if (!bs) {
sql_error(m, 500, "no stream (pointer) provided");
m->type = -1;
@@ -719,7 +721,7 @@ mvc_import_table(Client cntxt, BAT ***ba
as.tryall = 0;
as.complaints = NULL;
as.filename = "";
- fmt = as.format = (Column *) GDKmalloc(sizeof(Column) *
(as.nr_attrs + 1));
+ fmt = as.format = (Column *) GDKzalloc(sizeof(Column) *
(as.nr_attrs + 1));
if (fmt == NULL) {
sql_error(m, 500, "failed to allocate memory ");
return NULL;
@@ -740,7 +742,7 @@ mvc_import_table(Client cntxt, BAT ***ba
fmt[i].frstr = &_ASCIIadt_frStr;
fmt[i].extra = col;
fmt[i].len = fmt[i].nillen = ATOMlen(fmt[i].adt,
ATOMnilptr(fmt[i].adt));
- fmt[i].data = GDKmalloc(fmt[i].len);
+ fmt[i].data = GDKzalloc(fmt[i].len);
fmt[i].c = NULL;
fmt[i].ws = !has_whitespace(fmt[i].sep);
fmt[i].quote = ssep ? ssep[0] : 0;
@@ -1246,7 +1248,7 @@ mvc_export_table(backend *b, stream *s,
as.nr = nr;
as.offset = offset;
fmt = as.format = (Column *) GDKzalloc(sizeof(Column) * (as.nr_attrs +
1));
- tres = GDKmalloc(sizeof(struct time_res) * (as.nr_attrs));
+ tres = GDKzalloc(sizeof(struct time_res) * (as.nr_attrs));
fmt[0].c = NULL;
fmt[0].sep = (csv) ? btag : "";
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list