/* Interface to Perl from OCaml.
* Copyright (C) 2003 Merjis Ltd.
- * $Id: perl_c.c,v 1.14 2004-02-03 12:38:57 rich Exp $
+ * $Id: perl_c.c,v 1.16 2004-11-03 14:15:18 rich Exp $
*/
#include <stdio.h>
CAMLlocal1 (rsvv);
SV *sv = Sv_val (svv);
- if (SvTYPE (sv) != SVt_RV)
+ if (!SvROK (sv))
invalid_argument ("deref: SV is not a reference");
switch (SvTYPE (SvRV (sv))) {
case SVt_IV:
CAMLlocal1 (ravv);
SV *sv = Sv_val (svv);
- if (SvTYPE (sv) != SVt_RV)
+ if (!SvROK (sv))
invalid_argument ("deref_array: SV is not a reference");
switch (SvTYPE (SvRV (sv))) {
case SVt_PVAV:
CAMLlocal1 (rhvv);
SV *sv = Sv_val (svv);
- if (SvTYPE (sv) != SVt_RV)
- invalid_argument ("deref_array: SV is not a reference");
+ if (!SvROK (sv))
+ invalid_argument ("deref_hash: SV is not a reference");
switch (SvTYPE (SvRV (sv))) {
case SVt_PVHV:
break;
default:
- invalid_argument ("deref_array: SV is not a reference to a hash");
+ invalid_argument ("deref_hash: SV is not a reference to a hash");
}
rhvv = Val_hv ((HV *) SvRV (sv));
CAMLreturn (rhvv);