2006-02-20 Bill Haneman <billh@gnome.org>
+ * configure.in: Rev to 1.7.6.
+
+ Leak fixes for bug #331924.
+
+ * atk-bridge/bridge.c:
+ (spi_atk_bridge_init_base): Don't dup the string, it's already
+ been dup-ed. Fixes a leak.
+ (spi_atk_emit_eventv): Move the CORBA_free call here,
+ instead of spi_atk_state_event_listener; fixes another leak.
+ (spi_atk_bridge_key_listener):Free the dup'ed key strings after
+ notifying the registry; fixes another leak.
+
+ * registryd/registry.c:
+ (registry_flush_event_queue): Free the CORBA_any when
+ flushing the event, not just the string. Fixes another leak.
+ (registry_queue_event): Free the CORBA_any when dropping
+ events on the floor; fixes another leak.
+
+ * libspi/util.c:
+ (spi_init_any_object, spi_init_any_nil):
+ Always set _release to TRUE. Fixes another leak.
+
+2006-02-20 Bill Haneman <billh@gnome.org>
+
* configure.in: Rev to 1.7.5.
Reinstate localization of this module. Thanks for Rodney
Dawes for fixing my patch.
CORBA_exception_free (&ev);
g_free (e.type);
+
+ if (e.any_data._release) CORBA_free (&e.any_data._value);
va_end (args);
result = Accessibility_DeviceEventController_notifyListenersSync (
spi_atk_bridget_get_dec (), &key_event, &ev);
+ if (key_event.event_string) CORBA_free (key_event.event_string);
+
if (BONOBO_EX(&ev)) {
result = FALSE;
CORBA_exception_free (&ev);
spi_atk_emit_eventv (gobject, detail1, detail2, &any,
"object:%s", name);
- if (sp)
+ if (sp)
g_free (sp);
- if (any._release)
- CORBA_free (any._value);
return TRUE;
}
const gchar *s = atk_object_get_name (obj);
*app = spi_accessible_new_return (atk_get_root (), FALSE, NULL);
*role = spi_role_from_atk_role (atk_object_get_role (obj));
- *name = CORBA_string_dup (s ? s : "");
+ *name = s ? s : ""; /* string gets dup-ed in util.c spi_init_any_* */
}
static void
AT_SPI_MAJOR_VERSION=1
AT_SPI_MINOR_VERSION=7
-AT_SPI_MICRO_VERSION=5
+AT_SPI_MICRO_VERSION=6
AT_SPI_INTERFACE_AGE=0
AT_SPI_BINARY_AGE=0
AT_SPI_VERSION="$AT_SPI_MAJOR_VERSION.$AT_SPI_MINOR_VERSION.$AT_SPI_MICRO_VERSION"
details->any_data._type = TC_null;
details->any_data._value = NULL;
- details->any_data._release = FALSE;
+ details->any_data._release = TRUE;
}
void
details->any_data._type = TC_CORBA_Object;
details->any_data._value = o;
- details->any_data._release = FALSE;
+ details->any_data._release = TRUE;
}
void
}
CORBA_free ((void *)q_ctx->etype.event_name);
CORBA_free ((void *)q_ctx->e_out.type);
+ if (q_ctx->e_out.any_data._type != TC_null)
+ CORBA_free ((void *)q_ctx->e_out.any_data._value);
g_free (q_ctx);
}
registry->is_queueing = FALSE;
bonobo_object_release_unref (q_ctx->source, NULL);
CORBA_free ((void *)q_ctx->etype.event_name);
CORBA_free ((void *)q_ctx->e_out.type);
+ if (q_ctx->e_out.any_data._type != TC_null)
+ CORBA_free ((void *)q_ctx->e_out.any_data._value);
g_free (q_ctx);
return TRUE;
}