*
* A #GClosure represents a callback supplied by the programmer. It
* will generally comprise a function of some kind and a marshaller
- * used to call it. It is the reponsibility of the marshaller to
+ * used to call it. It is the responsibility of the marshaller to
* convert the arguments for the invocation from #GValues into
* a suitable form, perform the callback on the converted arguments,
* and transform the return value back into a #GValue.
* struct _MyClosure
* {
* GClosure closure;
- * /* extra data goes here */
+ * // extra data goes here
* };
*
* static void
* {
* MyClosure *my_closure = (MyClosure *)closure;
*
- * /* free extra data here */
+ * // free extra data here
* }
*
* MyClosure *my_closure_new (gpointer data)
* closure = g_closure_new_simple (sizeof (MyClosure), data);
* my_closure = (MyClosure *) closure;
*
- * /* initialize extra data here */
+ * // initialize extra data here
*
* g_closure_add_finalize_notifier (closure, notify_data,
* my_closure_finalize);
* |[<!-- language="C" -->
* closure = g_cclosure_new (cb_func, cb_data);
* g_source_set_closure (source, closure);
- * g_closure_unref (closure); /* GObject doesn't really need this */
+ * g_closure_unref (closure); // GObject doesn't really need this
* ]|
* Because g_source_set_closure() (and similar functions) take ownership of the
* initial reference count, if it is unowned, we instead can write:
* A generic marshaller function implemented via
* [libffi](http://sourceware.org/libffi/).
*
+ * Normally this function is not passed explicitly to g_signal_new(),
+ * but used automatically by GLib when specifying a %NULL marshaller.
+ *
* Since: 2.30
*/
void
args = g_alloca (sizeof (gpointer) * n_args);
storage = g_alloca (sizeof (va_arg_storage) * n_params);
- if (tmpval_used)
- enum_tmpval = g_alloca (sizeof (gint));
-
if (G_CCLOSURE_SWAP_DATA (closure))
{
atypes[n_args-1] = &ffi_type_pointer;