}
/* Free the returned array after use, but NOT the values in the array */
-void ** newtListboxGetSelection(newtComponent co)
+void ** newtListboxGetSelection(newtComponent co, int *numitems)
{
struct listbox * li;
int i;
void **retval;
struct items *item;
- if(!co) return NULL;
+ if(!co || !numitems) return NULL;
li = co->data;
if(!li || !li->numSelected) return NULL;
- retval = malloc((li->numSelected + 1) * sizeof(void *));
+ retval = malloc(li->numSelected * sizeof(void *));
for(i = 0, item = li->boxItems; item != NULL;
item = item->next)
if(item->isSelected)
retval[i++] = item->data;
- retval[i] = NULL;
+ *numitems = li->numSelected;
return retval;
}
int newtListboxDeleteEntry(newtComponent co, int num);
void newtListboxClear(newtComponent co); /* removes all entries from listbox */
void newtListboxGetEntry(newtComponent co, int num, char **text, void **data);
-void **newtListboxGetSelection(newtComponent co);
+void **newtListboxGetSelection(newtComponent co, int *numitems);
void newtListboxClearSelection(newtComponent co);
void newtListboxSelectItem(newtComponent co, int item,
enum newtFlagsSense sense);
char results[10];
char * enr2, * enr3, * scaleVal;
void ** selectedList;
- int i;
+ int i, numsel;
char buf[20];
newtInit();
enr2 = strdup(enr2);
enr3 = strdup(enr3);
- selectedList = newtListboxGetSelection(lb);
+ selectedList = newtListboxGetSelection(lb, &numsel);
newtFormDestroy(f);
if(selectedList) {
printf("\nSelected listbox items:\n");
- for(i = 0; selectedList[i]; i++)
+ for(i = 0; i < numsel; i++)
puts(selectedList[i]);
}
}