]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix Android handle wraparound
authorPo Lu <luangruo@yahoo.com>
Thu, 2 Mar 2023 05:48:03 +0000 (13:48 +0800)
committerPo Lu <luangruo@yahoo.com>
Thu, 2 Mar 2023 05:48:03 +0000 (13:48 +0800)
* src/android.c (android_alloc_id): Return correct values upon
wraparound.

src/android.c

index daeb7ab70f6dea64efe8354418daf6613354602d..1e91abffa6ff7bf6adfb1ab1b2ef7eaa0f3e5f4b 100644 (file)
@@ -2825,25 +2825,32 @@ android_alloc_id (void)
   android_handle handle;
 
   /* 0 is never a valid handle ID.  */
+
   if (!max_handle)
     max_handle++;
 
+  /* See if the handle is already occupied.  */
+
   if (android_handles[max_handle].handle)
     {
-      handle = max_handle + 1;
+      /* Look for a fresh unoccupied handle.  */
 
-      while (max_handle < handle)
+      handle = max_handle;
+      max_handle++;
+
+      while (handle != max_handle)
        {
          ++max_handle;
 
+         /* Make sure the handle is valid.  */
          if (!max_handle)
            ++max_handle;
 
          if (!android_handles[max_handle].handle)
-           return 0;
+           return max_handle++;
        }
 
-      return 0;
+      return ANDROID_NONE;
     }
 
   return max_handle++;