summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--generator/generator_perl.ml10
1 files changed, 7 insertions, 3 deletions
diff --git a/generator/generator_perl.ml b/generator/generator_perl.ml
index c8324693..e2ec254b 100644
--- a/generator/generator_perl.ml
+++ b/generator/generator_perl.ml
@@ -256,11 +256,15 @@ delete_event_callback (g, event_handle)
int event_handle;
PREINIT:
char key[64];
+ SV *cb;
CODE:
snprintf (key, sizeof key, \"_perl_event_%%d\", event_handle);
- guestfs_set_private (g, key, NULL);
-
- guestfs_delete_event_callback (g, event_handle);
+ cb = guestfs_get_private (g, key);
+ if (cb) {
+ SvREFCNT_dec (cb);
+ guestfs_set_private (g, key, NULL);
+ guestfs_delete_event_callback (g, event_handle);
+ }
SV *
last_errno (g)