Browse Source

Updated SDL_TLSID to use the same type as other IDs in SDL

Sam Lantinga 1 year ago
parent
commit
df4b855af5
3 changed files with 4 additions and 3 deletions
  1. 1 1
      include/SDL3/SDL_thread.h
  2. 2 1
      src/thread/SDL_thread.c
  3. 1 1
      src/thread/SDL_thread_c.h

+ 1 - 1
include/SDL3/SDL_thread.h

@@ -53,7 +53,7 @@ typedef struct SDL_Thread SDL_Thread;
 typedef Uint64 SDL_ThreadID;
 
 /* Thread local storage ID, 0 is the invalid ID */
-typedef unsigned int SDL_TLSID;
+typedef Uint32 SDL_TLSID;
 
 /**
  *  The SDL thread priority.

+ 2 - 1
src/thread/SDL_thread.c

@@ -29,7 +29,7 @@
 SDL_TLSID SDL_CreateTLS(void)
 {
     static SDL_AtomicInt SDL_tls_id;
-    return SDL_AtomicIncRef(&SDL_tls_id) + 1;
+    return (SDL_TLSID)(SDL_AtomicIncRef(&SDL_tls_id) + 1);
 }
 
 void *SDL_GetTLS(SDL_TLSID id)
@@ -60,6 +60,7 @@ int SDL_SetTLS(SDL_TLSID id, const void *value, void(SDLCALL *destructor)(void *
         newlimit = (id + TLS_ALLOC_CHUNKSIZE);
         new_storage = (SDL_TLSData *)SDL_realloc(storage, sizeof(*storage) + (newlimit - 1) * sizeof(storage->array[0]));
         if (!new_storage) {
+            SDL_OutOfMemory();
             return -1;
         }
         storage = new_storage;

+ 1 - 1
src/thread/SDL_thread_c.h

@@ -78,7 +78,7 @@ extern void SDL_RunThread(SDL_Thread *thread);
 /* This is the system-independent thread local storage structure */
 typedef struct
 {
-    unsigned int limit;
+    SDL_TLSID limit;
     struct
     {
         void *data;