tmp = (double *) callocordie (nb, sizeof (double));
memcpy (tmp, tab->data, ((tab->size < nb) ? tab->size : nb) * sizeof (double));
}
- free (tab->data);
+ if (tab->data){
+ free (tab->data);
+ }
tab->data = tmp;
tab->size = nb;
return tab;
if ((!tab) || (((id < 1) || (id > tab->size)) && (id != -1))) {
VERBOSE (WARNING, fprintf (stdout, "error out of bounds (%d/%d)\n", id, (tab) ? tab->size : 0));
} else {
- ret = tab->data[id - 1];
/* special case for inserting an element at the end */
id = (id == -1) ? tab->size : id;
+ /* read data */
+ ret = tab->data[id - 1];
+
/* create larger tab */
double *tmp = (double *) callocordie (tab->size - 1, sizeof (double));
memcpy (tmp, tab->data, (id - 1) * sizeof (double));
void order_tab (tab_t *tab)
{
int i, j;
- if ((!tab) || (tab->size < 3)) {
- VERBOSE (WARNING, fprintf (stdout, "error not enough element in stack (%d)\n", tab->size));
+ if ((!tab) || (tab->size < 2)) {
+ VERBOSE (WARNING, fprintf (stdout, "error not enough element in stack (%d)\n", (tab) ? tab->size : 0));
return;
}