Special-case flag value of 0. Instead of returning the first random
authorTim-Philipp Müller <tpm@src.gnome.org>
Fri, 12 Aug 2005 16:09:19 +0000 (16:09 +0000)
committerTim-Philipp Müller <tpm@src.gnome.org>
Fri, 12 Aug 2005 16:09:19 +0000 (16:09 +0000)
* gobject/genums.c: (g_flags_get_first_value): Special-case flag
value of 0. Instead of returning the first random GFlagsValue
we come across, return the GFlagsValue for 0 if it exists or
NULL if it does not exist. Never return the GFlagsValue for 0
if the requested flags value is nonzero.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-8
gobject/genums.c

index 1c3d253..f1dd89e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2005-08-12  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gobject/genums.c: (g_flags_get_first_value): Special-case flag
+         value of 0. Instead of returning the first random GFlagsValue
+         we come across, return the GFlagsValue for 0 if it exists or
+         NULL if it does not exist. Never return the GFlagsValue for 0
+         if the requested flags value is nonzero.
+
 2005-08-12  Matthias Clasen  <mclasen@redhat.com>
 
        * configure.in: Bump version to 2.8.0
index 1c3d253..f1dd89e 100644 (file)
@@ -1,3 +1,11 @@
+2005-08-12  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gobject/genums.c: (g_flags_get_first_value): Special-case flag
+         value of 0. Instead of returning the first random GFlagsValue
+         we come across, return the GFlagsValue for 0 if it exists or
+         NULL if it does not exist. Never return the GFlagsValue for 0
+         if the requested flags value is nonzero.
+
 2005-08-12  Matthias Clasen  <mclasen@redhat.com>
 
        * configure.in: Bump version to 2.8.0
index 1c3d253..f1dd89e 100644 (file)
@@ -1,3 +1,11 @@
+2005-08-12  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gobject/genums.c: (g_flags_get_first_value): Special-case flag
+         value of 0. Instead of returning the first random GFlagsValue
+         we come across, return the GFlagsValue for 0 if it exists or
+         NULL if it does not exist. Never return the GFlagsValue for 0
+         if the requested flags value is nonzero.
+
 2005-08-12  Matthias Clasen  <mclasen@redhat.com>
 
        * configure.in: Bump version to 2.8.0
index 1c3d253..f1dd89e 100644 (file)
@@ -1,3 +1,11 @@
+2005-08-12  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gobject/genums.c: (g_flags_get_first_value): Special-case flag
+         value of 0. Instead of returning the first random GFlagsValue
+         we come across, return the GFlagsValue for 0 if it exists or
+         NULL if it does not exist. Never return the GFlagsValue for 0
+         if the requested flags value is nonzero.
+
 2005-08-12  Matthias Clasen  <mclasen@redhat.com>
 
        * configure.in: Bump version to 2.8.0
index 63ccd93..2ce3dc3 100644 (file)
@@ -379,10 +379,19 @@ g_flags_get_first_value (GFlagsClass *flags_class,
   if (flags_class->n_values)
     {
       GFlagsValue *flags_value;
-      
-      for (flags_value = flags_class->values; flags_value->value_name; flags_value++)
-       if ((flags_value->value & value) == flags_value->value)
-         return flags_value;
+
+      if (value == 0)
+        {
+          for (flags_value = flags_class->values; flags_value->value_name; flags_value++)
+            if (flags_value->value == 0)
+              return flags_value;
+        }
+      else
+        {
+          for (flags_value = flags_class->values; flags_value->value_name; flags_value++)
+            if (flags_value->value != 0 && (flags_value->value & value) == flags_value->value)
+              return flags_value;
+        }      
     }
   
   return NULL;