diff options
author | Thomas E. Dickey <dickey@invisible-island.net> | 2019-05-17 04:52:57 -0400 |
---|---|---|
committer | Thomas E. Dickey <dickey@invisible-island.net> | 2019-05-18 06:42:13 -0400 |
commit | 36019ab614068bdf3fc933addc3a9b4cb512c9e0 (patch) | |
tree | 418fc1371a58fd476404cdcbd13c1dfcff52e8a4 /src/VarGet.c | |
parent | 1f0e3238352a497a59a36e0b8a5b4723c634b2e1 (diff) | |
download | xorg-lib-libXt-36019ab614068bdf3fc933addc3a9b4cb512c9e0.tar.gz |
use explicit pointer check to eliminate a clang --analyze warning in VarGet.c
Signed-off-by: Thomas E. Dickey <dickey@invisible-island.net>
Diffstat (limited to 'src/VarGet.c')
-rw-r--r-- | src/VarGet.c | 58 |
1 files changed, 30 insertions, 28 deletions
diff --git a/src/VarGet.c b/src/VarGet.c index 1ac24cd..2736899 100644 --- a/src/VarGet.c +++ b/src/VarGet.c @@ -234,44 +234,46 @@ XtVaGetValues(Widget widget, ...) _XtCountVaList(var, &total_count, &typed_count); if (total_count != typed_count) { - args = (ArgList)__XtMalloc((unsigned)((size_t)(total_count - typed_count) - * sizeof(Arg))); + size_t limit = (size_t)(total_count - typed_count); + args = (ArgList)__XtMalloc((unsigned)(limit * sizeof(Arg))); } else args = NULL; /* for lint; really unused */ va_end(var); - va_start(var,widget); - for(attr = va_arg(var, String), count = 0 ; attr != NULL; - attr = va_arg(var, String)) { - if (strcmp(attr, XtVaTypedArg) == 0) { - typed_arg.name = va_arg(var, String); - typed_arg.type = va_arg(var, String); - typed_arg.value = va_arg(var, XtArgVal); - typed_arg.size = va_arg(var, int); - - if (resources == NULL) { - XtGetResourceList(XtClass(widget), &resources,&num_resources); - } - - GetTypedArg(widget, &typed_arg, resources, num_resources); - } else if (strcmp(attr, XtVaNestedList) == 0) { - if (resources == NULL) { - XtGetResourceList(XtClass(widget),&resources, &num_resources); + if (args != NULL) { + va_start(var,widget); + for(attr = va_arg(var, String), count = 0 ; attr != NULL; + attr = va_arg(var, String)) { + if (strcmp(attr, XtVaTypedArg) == 0) { + typed_arg.name = va_arg(var, String); + typed_arg.type = va_arg(var, String); + typed_arg.value = va_arg(var, XtArgVal); + typed_arg.size = va_arg(var, int); + + if (resources == NULL) { + XtGetResourceList(XtClass(widget), &resources,&num_resources); + } + + GetTypedArg(widget, &typed_arg, resources, num_resources); + } else if (strcmp(attr, XtVaNestedList) == 0) { + if (resources == NULL) { + XtGetResourceList(XtClass(widget),&resources, &num_resources); + } + + count += GetNestedArg(widget, va_arg(var, XtTypedArgList), + (args+count), resources, num_resources); + } else { + args[count].name = attr; + args[count].value = va_arg(var, XtArgVal); + count ++; } - - count += GetNestedArg(widget, va_arg(var, XtTypedArgList), - (args+count), resources, num_resources); - } else { - args[count].name = attr; - args[count].value = va_arg(var, XtArgVal); - count ++; } + va_end(var); } - va_end(var); XtFree((XtPointer)resources); - if (total_count != typed_count) { + if (args != NULL) { XtGetValues(widget, args, (Cardinal) count); XtFree((XtPointer)args); } |