- mdb->fields[i] = (SQL_FIELD *)malloc(sizeof(SQL_FIELD));
- mdb->fields[i]->name = mdb->result[i];
- mdb->fields[i]->length = strlen(mdb->fields[i]->name);
- mdb->fields[i]->max_length = mdb->fields[i]->length;
- for (j=1; j <= mdb->nrow; j++) {
- int len;
- if (mdb->result[i + mdb->ncolumn *j]) {
- len = (uint32_t)strlen(mdb->result[i + mdb->ncolumn * j]);
- } else {
- len = 0;
- }
- if (len > mdb->fields[i]->max_length) {
- mdb->fields[i]->max_length = len;
- }
- }
- mdb->fields[i]->type = 0;
- mdb->fields[i]->flags = 1; /* not null */
+ mdb->fields[i] = (SQL_FIELD *)malloc(sizeof(SQL_FIELD));
+ /* ***FIXME*** it seems to me that this is wrong
+ * fields has lots of items
+ */
+ if (mdb->result[i] == NULL) {
+ mdb->fields_defined = false;
+ free(mdb->fields);
+ mdb->fields = NULL;
+ mdb->field = 0;
+ return;
+ }
+ mdb->fields[i]->name = mdb->result[i];
+ mdb->fields[i]->length = cstrlen(mdb->fields[i]->name);
+ mdb->fields[i]->max_length = mdb->fields[i]->length;
+ for (j=1; j <= mdb->nrow; j++) {
+ int len;
+ if (mdb->result[i + mdb->ncolumn *j]) {
+ len = (uint32_t)cstrlen(mdb->result[i + mdb->ncolumn * j]);
+ } else {
+ len = 0;
+ }
+ if (len > mdb->fields[i]->max_length) {
+ mdb->fields[i]->max_length = len;
+ }
+ }
+ mdb->fields[i]->type = 0;
+ mdb->fields[i]->flags = 1; /* not null */