C<$foo =~ give_me_a_regex>; /x modifier
[p5sagit/p5-mst-13.2.git] / ext / SDBM_File / SDBM_File.xs
index 681cf14..859730b 100644 (file)
@@ -1,3 +1,4 @@
+#define PERL_NO_GET_CONTEXT
 #include "EXTERN.h"
 #include "perl.h"
 #include "XSUB.h"
@@ -23,16 +24,13 @@ typedef datum datum_value ;
            if (db->filtering)                                  \
                croak("recursion detected in %s", name) ;       \
            db->filtering = TRUE ;                              \
-           /* SAVE_DEFSV ;*/   /* save $_ */                   \
            save_defsv = newSVsv(DEFSV) ;                       \
            sv_setsv(DEFSV, arg) ;                              \
            PUSHMARK(sp) ;                                      \
            (void) perl_call_sv(db->type, G_DISCARD|G_NOARGS);  \
-           /* SPAGAIN ; */                                             \
            sv_setsv(arg, DEFSV) ;                              \
            sv_setsv(DEFSV, save_defsv) ;                               \
            SvREFCNT_dec(save_defsv) ;                          \
-           /* PUTBACK ; */                                             \
            db->filtering = FALSE ;                             \
            /*printf("end of filtering %s\n", name) ;*/         \
        }
@@ -59,7 +57,7 @@ sdbm_TIEHASH(dbtype, filename, flags, mode)
            DBM *       dbp ;
 
            RETVAL = NULL ;
-           if (dbp = sdbm_open(filename,flags,mode) ) {
+           if ((dbp = sdbm_open(filename,flags,mode))) {
                RETVAL = (SDBM_File)safemalloc(sizeof(SDBM_File_type)) ;
                Zero(RETVAL, 1, SDBM_File_type) ;
                RETVAL->dbp = dbp ;
@@ -82,7 +80,7 @@ sdbm_DESTROY(db)
            SvREFCNT_dec(db->filter_fetch_value) ;
          if (db->filter_store_value)
            SvREFCNT_dec(db->filter_store_value) ;
-         Safefree(db) ;        
+         safefree(db) ;
 
 datum_value
 sdbm_FETCH(db, key)
@@ -107,7 +105,7 @@ sdbm_STORE(db, key, value, flags = DBM_REPLACE)
 int
 sdbm_DELETE(db, key)
        SDBM_File       db
-       datum           key
+       datum_key       key
 
 int
 sdbm_EXISTS(db,key)
@@ -143,7 +141,8 @@ sdbm_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 ;                       \
@@ -165,8 +164,6 @@ filter_fetch_key(db, code)
        SV *            RETVAL = &PL_sv_undef ;
        CODE:
            setFilter(filter_fetch_key) ;
-       OUTPUT:
-           RETVAL
 
 SV *
 filter_store_key(db, code)
@@ -175,8 +172,6 @@ filter_store_key(db, code)
        SV *            RETVAL =  &PL_sv_undef ;
        CODE:
            setFilter(filter_store_key) ;
-       OUTPUT:
-           RETVAL
 
 SV *
 filter_fetch_value(db, code)
@@ -185,8 +180,6 @@ filter_fetch_value(db, code)
        SV *            RETVAL =  &PL_sv_undef ;
        CODE:
            setFilter(filter_fetch_value) ;
-       OUTPUT:
-           RETVAL
 
 SV *
 filter_store_value(db, code)
@@ -195,6 +188,4 @@ filter_store_value(db, code)
        SV *            RETVAL =  &PL_sv_undef ;
        CODE:
            setFilter(filter_store_value) ;
-       OUTPUT:
-           RETVAL