summaryrefslogtreecommitdiff
path: root/src/VarGet.c
diff options
context:
space:
mode:
authorThomas E. Dickey <dickey@invisible-island.net>2019-05-17 04:52:57 -0400
committerThomas E. Dickey <dickey@invisible-island.net>2019-05-18 06:42:13 -0400
commit36019ab614068bdf3fc933addc3a9b4cb512c9e0 (patch)
tree418fc1371a58fd476404cdcbd13c1dfcff52e8a4 /src/VarGet.c
parent1f0e3238352a497a59a36e0b8a5b4723c634b2e1 (diff)
downloadxorg-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.c58
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);
}