diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2014-01-12 20:23:19 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2014-01-12 20:23:19 +0200 |
commit | f934f2192779db0091d1706d97d1fd43cb26dc9a (patch) | |
tree | cadd683f27dd5b59804be14be3d6077387472c60 /awkgram.c | |
parent | 1daf400c55ab311c43f1cfa0a253955d81c0c2e7 (diff) | |
parent | 6c09c80378028858d439158d923f94a72d30efc6 (diff) | |
download | egawk-f934f2192779db0091d1706d97d1fd43cb26dc9a.tar.gz egawk-f934f2192779db0091d1706d97d1fd43cb26dc9a.tar.bz2 egawk-f934f2192779db0091d1706d97d1fd43cb26dc9a.zip |
Merge branch 'gawk-4.1-stable'
Diffstat (limited to 'awkgram.c')
-rw-r--r-- | awkgram.c | 21 |
1 files changed, 7 insertions, 14 deletions
@@ -6856,18 +6856,9 @@ func_use(const char *name, enum defref how) len = strlen(name); ind = hash(name, len, HASHSIZE, NULL); - for (fp = ftable[ind]; fp != NULL; fp = fp->next) { - if (strcmp(fp->name, name) == 0) { - if (how == FUNC_DEFINE) - fp->defined++; - else if (how == FUNC_EXT) { - fp->defined++; - fp->extension++; - } else - fp->used++; - return; - } - } + for (fp = ftable[ind]; fp != NULL; fp = fp->next) + if (strcmp(fp->name, name) == 0) + goto update_value; /* not in the table, fall through to allocate a new one */ @@ -6875,6 +6866,10 @@ func_use(const char *name, enum defref how) memset(fp, '\0', sizeof(struct fdesc)); emalloc(fp->name, char *, len + 1, "func_use"); strcpy(fp->name, name); + fp->next = ftable[ind]; + ftable[ind] = fp; + +update_value: if (how == FUNC_DEFINE) fp->defined++; else if (how == FUNC_EXT) { @@ -6882,8 +6877,6 @@ func_use(const char *name, enum defref how) fp->extension++; } else fp->used++; - fp->next = ftable[ind]; - ftable[ind] = fp; } /* track_ext_func --- add an extension function to the table */ |