From 658b765bfe534f7aed0d96aa11a0adebe396838f Mon Sep 17 00:00:00 2001 From: "ol.sc" Date: Tue, 23 Oct 2012 19:24:27 +0000 Subject: [PATCH] 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 --- samples/multidemo.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) 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; } -- 2.39.2