-MO=C falls over on package <none>
[p5sagit/p5-mst-13.2.git] / ext / NDBM_File / NDBM_File.xs
index 60b141e..49a1db5 100644 (file)
@@ -63,6 +63,7 @@ ndbm_DESTROY(db)
        NDBM_File       db
        CODE:
        dbm_close(db->dbp);
+       safefree(db);
 
 #define ndbm_FETCH(db,key)                     dbm_fetch(db->dbp,key)
 datum_value
@@ -117,7 +118,8 @@ ndbm_clearerr(db)
 #define setFilter(type)                                        \
        {                                               \
            if (db->type)                               \
-               RETVAL = newSVsv(db->type) ;            \
+               RETVAL = sv_mortalcopy(db->type) ;      \
+           ST(0) = RETVAL ;                            \
            if (db->type && (code == &PL_sv_undef)) {   \
                 SvREFCNT_dec(db->type) ;               \
                db->type = NULL ;                       \
@@ -139,8 +141,6 @@ filter_fetch_key(db, code)
        SV *            RETVAL = &PL_sv_undef ;
        CODE:
            setFilter(filter_fetch_key) ;
-       OUTPUT:
-           RETVAL
 
 SV *
 filter_store_key(db, code)
@@ -149,8 +149,6 @@ filter_store_key(db, code)
        SV *            RETVAL =  &PL_sv_undef ;
        CODE:
            setFilter(filter_store_key) ;
-       OUTPUT:
-           RETVAL
 
 SV *
 filter_fetch_value(db, code)
@@ -159,8 +157,6 @@ filter_fetch_value(db, code)
        SV *            RETVAL =  &PL_sv_undef ;
        CODE:
            setFilter(filter_fetch_value) ;
-       OUTPUT:
-           RETVAL
 
 SV *
 filter_store_value(db, code)
@@ -169,6 +165,4 @@ filter_store_value(db, code)
        SV *            RETVAL =  &PL_sv_undef ;
        CODE:
            setFilter(filter_store_value) ;
-       OUTPUT:
-           RETVAL