diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2017-02-17 08:20:19 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2017-02-17 08:20:19 +0200 |
commit | 9acc5c7442feff44445a4c5ae9f618d879064cb4 (patch) | |
tree | dfea3de0fea709dcc511b6e715d1b790eb48b498 /builtin.c | |
parent | f5870138fe92a9abb5c4407a77c8ac782936173e (diff) | |
parent | 4ce031ad3c3d157a425f721688a09a7dde018619 (diff) | |
download | egawk-9acc5c7442feff44445a4c5ae9f618d879064cb4.tar.gz egawk-9acc5c7442feff44445a4c5ae9f618d879064cb4.tar.bz2 egawk-9acc5c7442feff44445a4c5ae9f618d879064cb4.zip |
Merge branch 'master' into feature/stringfix
Diffstat (limited to 'builtin.c')
-rw-r--r-- | builtin.c | 15 |
1 files changed, 9 insertions, 6 deletions
@@ -4001,7 +4001,7 @@ NODE * do_typeof(int nargs) { NODE *arg; - char *res = "unknown"; + char *res = NULL; bool deref = true; arg = POP(); @@ -4013,9 +4013,6 @@ do_typeof(int nargs) break; case Node_val: switch (fixtype(arg)->flags & (STRING|NUMBER|USER_INPUT|REGEX)) { - case STRING: - res = "string"; - break; case NUMBER: res = "number"; break; @@ -4025,14 +4022,20 @@ do_typeof(int nargs) case REGEX: res = "regexp"; break; + case STRING: + res = "string"; + // fall through case NUMBER|STRING: - if (arg == Nnull_string) { + if (arg == Nnull_string || (arg->flags & NULL_FIELD) != 0) { res = "unassigned"; break; } /* fall through */ default: - warning(_("typeof detected invalid flags combination `%s'; please file a bug report."), flags2str(arg->flags)); + if (res == NULL) { + warning(_("typeof detected invalid flags combination `%s'; please file a bug report."), flags2str(arg->flags)); + res = "unknown"; + } break; } break; |