mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
malloc bug fixes
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@424 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
75c1407b95
commit
87e2ac2d97
@ -68,6 +68,11 @@ xaccInitTable (Table * table, int tile_rows, int tile_cols)
|
|||||||
table->num_tile_cols = tile_cols;
|
table->num_tile_cols = tile_cols;
|
||||||
|
|
||||||
/* create an empty table */
|
/* create an empty table */
|
||||||
|
if (0 == num_phys_rows) {
|
||||||
|
table->entries = NULL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
table->entries = (char ***) malloc (num_phys_rows * sizeof (char **));
|
table->entries = (char ***) malloc (num_phys_rows * sizeof (char **));
|
||||||
for (i=0; i<num_phys_rows; i++) {
|
for (i=0; i<num_phys_rows; i++) {
|
||||||
table->entries[i] = (char **) malloc (num_phys_cols * sizeof (char *));
|
table->entries[i] = (char **) malloc (num_phys_cols * sizeof (char *));
|
||||||
@ -367,12 +372,9 @@ modifyCB (Widget mw, XtPointer cd, XtPointer cb)
|
|||||||
} else {
|
} else {
|
||||||
/* update data. bounds check done earlier */
|
/* update data. bounds check done earlier */
|
||||||
free (table->entries[row][col]);
|
free (table->entries[row][col]);
|
||||||
table->entries[row][col] = strdup (newval);
|
table->entries[row][col] = newval;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ==================================================== */
|
/* ==================================================== */
|
||||||
|
|
||||||
@ -385,6 +387,7 @@ leaveCB (Widget mw, XtPointer cd, XtPointer cb)
|
|||||||
int row, col;
|
int row, col;
|
||||||
int rel_row, rel_col;
|
int rel_row, rel_col;
|
||||||
const char * (*leave) (struct _SingleCell *, const char *);
|
const char * (*leave) (struct _SingleCell *, const char *);
|
||||||
|
char * newval;
|
||||||
|
|
||||||
table = (Table *) cd;
|
table = (Table *) cd;
|
||||||
arr = table->cursor;
|
arr = table->cursor;
|
||||||
@ -411,12 +414,14 @@ leaveCB (Widget mw, XtPointer cd, XtPointer cb)
|
|||||||
val = cbs->value;
|
val = cbs->value;
|
||||||
retval = leave (arr->cells[rel_row][rel_col], val);
|
retval = leave (arr->cells[rel_row][rel_col], val);
|
||||||
|
|
||||||
if (NULL == retval) retval = "";
|
newval = (char *) retval;
|
||||||
|
if (val == retval) newval = strdup (retval);
|
||||||
|
if (NULL == retval) newval = strdup ("");
|
||||||
|
|
||||||
/* save whatever was returned */
|
/* save whatever was returned */
|
||||||
if (table->entries[row][col]) free (table->entries[row][col]);
|
if (table->entries[row][col]) free (table->entries[row][col]);
|
||||||
table->entries[row][col] = (char *) retval;
|
table->entries[row][col] = newval;
|
||||||
cbs->value = strdup (retval);
|
cbs->value = strdup (newval);
|
||||||
} else {
|
} else {
|
||||||
if (table->entries[row][col]) free (table->entries[row][col]);
|
if (table->entries[row][col]) free (table->entries[row][col]);
|
||||||
table->entries[row][col] = strdup (cbs->value);
|
table->entries[row][col] = strdup (cbs->value);
|
||||||
|
Loading…
Reference in New Issue
Block a user