--- a/pocaml_c.c
+++ b/pocaml_c.c
@@ -676,11 +676,13 @@
 static inline void
 check_perl_failure ()
 {
+  CAMLparam0 ();
+  CAMLlocal1 (errv);
+
   SV *errsv = get_sv ("@", TRUE);
 
   if (SvTRUE (errsv))		/* Equivalent of $@ in Perl. */
     {
-      CAMLlocal1 (errv);
       STRLEN n_a;
       const char *err = SvPV (errsv, n_a);
 
@@ -688,6 +688,8 @@
 
       caml_raise_with_arg (*caml_named_value ("pocaml_perl_failure"), errv);
     }
+
+  CAMLreturn0;
 }
 
 CAMLprim value
