diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-10-31 13:05:32 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-10-31 13:05:32 +0000 |
commit | bf3818c47a01257114d9122333d2eaa0fb207f40 (patch) | |
tree | 8f3326ce7da0a8471a0830d96688c654ed1d4b61 /dln.c | |
parent | d6eaa886f6970daf63d80ba96f1a63a9b2bc6038 (diff) |
merges r24839 from trunk into ruby_1_9_1.
--
* dln.c (aix_loaderror): get rid of using uninitialized value in the
case loadquery fails. fixed wrong index variable usage. see
[ruby-core:25479].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@25597 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'dln.c')
-rw-r--r-- | dln.c | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -1155,10 +1155,10 @@ dln_strerror(void) static void aix_loaderror(const char *pathname) { - char *message[8], errbuf[1024]; + char *message[1024], errbuf[1024]; int i,j; - struct errtab { + static const struct errtab { int errnum; char *errstr; } load_errtab[] = { @@ -1179,15 +1179,16 @@ aix_loaderror(const char *pathname) #define LOAD_ERRTAB_LEN (sizeof(load_errtab)/sizeof(load_errtab[0])) #define ERRBUF_APPEND(s) strncat(errbuf, s, sizeof(errbuf)-strlen(errbuf)-1) - snprintf(errbuf, 1024, "load failed - %s ", pathname); + snprintf(errbuf, sizeof(errbuf), "load failed - %s ", pathname); - if (!loadquery(1, &message[0], sizeof(message))) + message[0] = NULL; + if (!loadquery(L_GETMESSAGE, &message[0], sizeof(message))) ERRBUF_APPEND(strerror(errno)); for(i = 0; message[i] && *message[i]; i++) { int nerr = atoi(message[i]); for (j=0; j<LOAD_ERRTAB_LEN; j++) { - if (nerr == load_errtab[i].errnum && load_errtab[i].errstr) - ERRBUF_APPEND(load_errtab[i].errstr); + if (nerr == load_errtab[j].errnum && load_errtab[j].errstr) + ERRBUF_APPEND(load_errtab[j].errstr); } while (isdigit(*message[i])) message[i]++; ERRBUF_APPEND(message[i]); |