Fix GetBoundedRanges
authorMike Gorse <mgorse@suse.com>
Wed, 20 Nov 2013 20:45:30 +0000 (14:45 -0600)
committerMike Gorse <mgorse@suse.com>
Wed, 20 Nov 2013 20:45:30 +0000 (14:45 -0600)
atk-adaptor/adaptors/text-adaptor.c

index bd9a4c6..80bb921 100644 (file)
@@ -738,7 +738,8 @@ impl_GetBoundedRanges (DBusConnection * bus, DBusMessage * message,
       (&iter, DBUS_TYPE_ARRAY, "(iisv)", &array))
     {
       int len;
       (&iter, DBUS_TYPE_ARRAY, "(iisv)", &array))
     {
       int len;
-      for (len = 0; len < MAXRANGELEN && range_list[len]; ++len)
+      int count = (range_list ? MAXRANGELEN : 0);
+      for (len = 0; len < count && range_list[len]; ++len)
         {
           if (dbus_message_iter_open_container
               (&array, DBUS_TYPE_STRUCT, NULL, &struc))
         {
           if (dbus_message_iter_open_container
               (&array, DBUS_TYPE_STRUCT, NULL, &struc))
@@ -762,10 +763,16 @@ impl_GetBoundedRanges (DBusConnection * bus, DBusMessage * message,
                   dbus_message_iter_close_container (&struc, &variant);
                 }
               dbus_message_iter_close_container (&array, &struc);
                   dbus_message_iter_close_container (&struc, &variant);
                 }
               dbus_message_iter_close_container (&array, &struc);
+              g_free (range_list[len]->content);
+              g_free (range_list[len]);
             }
         }
       dbus_message_iter_close_container (&iter, &array);
     }
             }
         }
       dbus_message_iter_close_container (&iter, &array);
     }
+
+  if (range_list)
+    g_free (range_list);
+
   return reply;
 }
 
   return reply;
 }