[libpeas] Fix finding the extension type for Lua plugin
- From: Garrett Regier <gregier src gnome org>
- To: commits-list gnome org
- Cc: 
- Subject: [libpeas] Fix finding the extension type for Lua plugin
- Date: Tue, 30 Dec 2014 17:47:15 +0000 (UTC)
commit 897c4ada6df032c6ee7d4ff8e653c4fe85bbb660
Author: Garrett Regier <garrett regier riftio com>
Date:   Tue Dec 30 08:41:17 2014 -0800
    Fix finding the extension type for Lua plugin
    
    If the module's table had multiple extensions we would
    leak the key and value on the stack.
 loaders/lua5.1/peas-plugin-loader-lua.c |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)
---
diff --git a/loaders/lua5.1/peas-plugin-loader-lua.c b/loaders/lua5.1/peas-plugin-loader-lua.c
index 25582b9..eaf7cbb 100644
--- a/loaders/lua5.1/peas-plugin-loader-lua.c
+++ b/loaders/lua5.1/peas-plugin-loader-lua.c
@@ -201,16 +201,24 @@ _lua_find_extension_type (lua_State      *L,
 
   /* Must always have a valid key */
   lua_pushnil (L);
-  while (lua_next (L, -2) != 0 && found_type == G_TYPE_INVALID)
+  while (lua_next (L, -2) != 0)
     {
       if (lua_istable (L, -1))
         {
           found_type = _lua_get_gtype (L, -1);
 
-          if (found_type != G_TYPE_INVALID &&
-              !g_type_is_a (found_type, exten_type))
+          if (found_type != G_TYPE_INVALID)
             {
-              found_type = G_TYPE_INVALID;
+              if (!g_type_is_a (found_type, exten_type))
+                {
+                  found_type = G_TYPE_INVALID;
+                }
+              else
+                {
+                  /* Pop value and key */
+                  lua_pop (L, 2);
+                  break;
+                }
             }
         }
 
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]