Browse Source

Allow iterating just the keys or values in a hashtable

Sam Lantinga 10 months ago
parent
commit
47450425fd
1 changed files with 12 additions and 5 deletions
  1. 12 5
      src/SDL_hashtable.c

+ 12 - 5
src/SDL_hashtable.c

@@ -18,7 +18,6 @@
      misrepresented as being the original software.
      misrepresented as being the original software.
   3. This notice may not be removed or altered from any source distribution.
   3. This notice may not be removed or altered from any source distribution.
 */
 */
-
 #include "SDL_internal.h"
 #include "SDL_internal.h"
 #include "SDL_hashtable.h"
 #include "SDL_hashtable.h"
 
 
@@ -429,13 +428,21 @@ bool SDL_IterateHashTable(const SDL_HashTable *table, const void **_key, const v
     HT_ASSERT(item <= end);
     HT_ASSERT(item <= end);
 
 
     if (item == end) {
     if (item == end) {
-        *_key = NULL;
-        *_value = NULL;
+        if (_key) {
+            *_key = NULL;
+        }
+        if (_value) {
+            *_value = NULL;
+        }
         return false;
         return false;
     }
     }
 
 
-    *_key = item->key;
-    *_value = item->value;
+    if (_key) {
+        *_key = item->key;
+    }
+    if (_value) {
+        *_value = item->value;
+    }
     *iter = item;
     *iter = item;
 
 
     return true;
     return true;