From: ol.sc Date: Tue, 23 Oct 2012 19:24:27 +0000 (+0000) Subject: Replaced static array with realloc'ed memory block - like done in enumdevdir.c. X-Git-Tag: V2.14~204 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=658b765bfe534f7aed0d96aa11a0adebe396838f;p=cc65 Replaced static array with realloc'ed memory block - like done in enumdevdir.c. git-svn-id: svn://svn.cc65.org/cc65/trunk@5870 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- diff --git a/samples/multidemo.c b/samples/multidemo.c index 20f82b895..5e505083e 100644 --- a/samples/multidemo.c +++ b/samples/multidemo.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -42,10 +43,6 @@ struct { */ #define MAX_EM_OVERLAY 3 -/* Search for up to 10 extended memory drivers. - */ -#define MAX_EM_DRIVER 10 - /* Functions resident in an overlay can call back functions resident in the @@ -101,9 +98,9 @@ void foobar (void) unsigned char loademdriver (void) { - static char emd[MAX_EM_DRIVER][FILENAME_MAX]; DIR *dir; struct dirent *ent; + char *emd = NULL; unsigned char max = 0; unsigned char num; @@ -128,22 +125,26 @@ unsigned char loademdriver (void) } printf ("Dbg: Memorizing file %s\n", ent->d_name); - strcpy (emd[max], ent->d_name); - if (++max == MAX_EM_DRIVER) { - break; - } + emd = realloc (emd, FILENAME_MAX * (max + 1)); + strcpy (emd + FILENAME_MAX * max++, ent->d_name); } closedir (dir); for (num = 0; num < max; ++num) { - printf ("Dbg: Trying emdriver %s\n", emd[num]); - if (em_load_driver (emd[num]) == EM_ERR_OK) { - printf ("Dbg: Loaded emdriver %s\n", emd[num]); + char *drv; + + drv = emd + FILENAME_MAX * num; + printf ("Dbg: Trying emdriver %s\n", drv); + if (em_load_driver (drv) == EM_ERR_OK) { + printf ("Dbg: Loaded emdriver %s\n", drv); + free (emd); return 1; } - - printf ("Dbg: Emdriver %s failed\n", emd[num]); + + printf ("Dbg: Emdriver %s failed\n", drv); } + + free (emd); return 0; }