Add a hack to prevent a gcc warning "ignoring return value of 'strtoul'..."
authorwmeier <wmeier@f5534014-38df-0310-8fa8-9805f1628bb7>
Fri, 10 Jun 2011 02:10:44 +0000 (02:10 +0000)
committerwmeier <wmeier@f5534014-38df-0310-8fa8-9805f1628bb7>
Fri, 10 Jun 2011 02:10:44 +0000 (02:10 +0000)
for some gcc configurations (see _FORTIFY_SOURCE).
This hack is used instead of storing the result returned by strtoul() in a
dummy variable so as to prevent a gcc 4.6 with -Wextra warning:
 "set but not used ...".

TBD: will this hack pass muster with other validators
     such as Coverity, CLang, & etc ?

For much gory detail: see the message thread starting at:
http://www.wireshark.org/lists/wireshark-dev/201106/msg00088.html

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@37642 f5534014-38df-0310-8fa8-9805f1628bb7

gtk/prefs_dlg.c

index 38647162673fb073e5690e4f55b06ccec55dfd81..6425697c195a673d31822b4c4d75609c7ff4345c 100644 (file)
@@ -926,7 +926,6 @@ pref_check(pref_t *pref, gpointer user_data)
   const char *str_val;
   char *p;
   pref_t **badpref = user_data;
-  unsigned long val;
 
   /* Fetch the value of the preference, and check whether it's valid. */
   switch (pref->type) {
@@ -934,7 +933,21 @@ pref_check(pref_t *pref, gpointer user_data)
   case PREF_UINT:
     str_val = gtk_entry_get_text(GTK_ENTRY(pref->control));
     errno = 0;
-    val = strtoul(str_val, &p, pref->info.base);
+
+    /* XXX: The following ugly hack prevents a gcc warning
+       "ignoring return value of 'strtoul', declared with attribute warn_unused_result"
+       which can occur when using certain gcc configurations (see _FORTIFY_SOURCE).
+       A dummy variable is not used because when using gcc 4.6 with -Wextra a
+       "set but not used [-Wunused-but-set-variable]" warning will occur.
+       TBD: will this hack pass muster with other validators such as Coverity, CLang, & etc
+
+       [Guy Harris comment:
+        "... perhaps either using spin buttons for numeric preferences, or otherwise making
+         it impossible to type something that's not a number into the GUI for those preferences,
+         and thus avoiding the need to check whether it's a valid number, would also be a good idea."
+       ]
+    */
+    if(strtoul(str_val, &p, pref->info.base)){}
     if (p == str_val || *p != '\0' || errno != 0) {
       *badpref = pref;
       return PREFS_SET_SYNTAX_ERR;      /* number was bad */