In Perl_sv_catpv(), Perl_sv_catpv_mg() the ptr can be not NULL.
Nicholas Clark [Mon, 11 Feb 2008 19:22:18 +0000 (19:22 +0000)]
In Perl_sv_inc() and Perl_sv_dec(), the sv can be not NULL.
In Perl_parser_dup() the proto parser can be NULL.
In Perl_ptr_table_find(), the sought-for pointer can be NULL.
In Perl_save_set_svflags(), the saved SV can't be NULL.

p4raw-id: //depot/perl@33283

embed.fnc
proto.h

index 6e1736b..27204a3 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -836,7 +836,7 @@ Apd |int    |sv_backoff     |NN SV *const sv
 Apd    |SV*    |sv_bless       |NN SV* sv|NN HV* stash
 Afpd   |void   |sv_catpvf      |NN SV* sv|NN const char* pat|...
 Apd    |void   |sv_vcatpvf     |NN SV* sv|NN const char* pat|NULLOK va_list* args
-Apd    |void   |sv_catpv       |NN SV* sv|NN const char* ptr
+Apd    |void   |sv_catpv       |NN SV* sv|NULLOK const char* ptr
 Amdb   |void   |sv_catpvn      |NN SV* sv|NN const char* ptr|STRLEN len
 Amdb   |void   |sv_catsv       |NN SV* dsv|NULLOK SV* ssv
 Apd    |void   |sv_chop        |NN SV* sv|NULLOK const char* ptr
@@ -850,7 +850,7 @@ Apd |char*  |sv_collxfrm    |NN SV* sv|NN STRLEN* nxp
 #endif
 Ap     |OP*    |sv_compile_2op |NN SV* sv|NN OP** startp|NN const char* code|NN PAD** padp
 Apd    |int    |getcwd_sv      |NN SV* sv
-Apd    |void   |sv_dec         |NN SV* sv
+Apd    |void   |sv_dec         |NULLOK SV* sv
 Ap     |void   |sv_dump        |NN SV* sv
 ApdR   |bool   |sv_derived_from|NN SV* sv|NN const char *const name
 ApdR   |bool   |sv_does        |NN SV* sv|NN const char *const name
@@ -860,7 +860,7 @@ poMX        |void   |sv_free2       |NN SV* sv
 pd     |void   |sv_free_arenas
 Apd    |char*  |sv_gets        |NN SV* sv|NN PerlIO* fp|I32 append
 Apd    |char*  |sv_grow        |NN SV *const sv|STRLEN newlen
-Apd    |void   |sv_inc         |NN SV* sv
+Apd    |void   |sv_inc         |NULLOK SV* sv
 Apd    |void   |sv_insert      |NN SV* bigsv|STRLEN offset|STRLEN len \
                                |NN const char* little|STRLEN littlelen
 Apd    |int    |sv_isa         |NULLOK SV* sv|NN const char* name
@@ -1011,7 +1011,7 @@ Ap        |int    |runops_standard
 Ap     |int    |runops_debug
 Afpd   |void   |sv_catpvf_mg   |NN SV *sv|NN const char* pat|...
 Apd    |void   |sv_vcatpvf_mg  |NN SV* sv|NN const char* pat|NULLOK va_list* args
-Apd    |void   |sv_catpv_mg    |NN SV *sv|NN const char *ptr
+Apd    |void   |sv_catpv_mg    |NN SV *sv|NULLOK const char *ptr
 Apdbm  |void   |sv_catpvn_mg   |NN SV *sv|NN const char *ptr|STRLEN len
 Apdbm  |void   |sv_catsv_mg    |NN SV *dstr|NULLOK SV *sstr
 Afpd   |void   |sv_setpvf_mg   |NN SV *sv|NN const char* pat|...
@@ -1093,7 +1093,7 @@ ApR       |GP*    |gp_dup         |NULLOK GP* gp|NN CLONE_PARAMS* param
 ApR    |MAGIC* |mg_dup         |NULLOK MAGIC* mg|NN CLONE_PARAMS* param
 ApR    |SV*    |sv_dup         |NULLOK const SV* sstr|NN CLONE_PARAMS* param
 Ap     |void   |rvpv_dup       |NN SV* dstr|NN const SV *sstr|NN CLONE_PARAMS* param
-Ap     |yy_parser*|parser_dup  |NN const yy_parser *proto|NN CLONE_PARAMS* param
+Ap     |yy_parser*|parser_dup  |NULLOK const yy_parser *proto|NN CLONE_PARAMS* param
 #endif
 Apa    |PTR_TBL_t*|ptr_table_new
 ApR    |void*  |ptr_table_fetch|NN PTR_TBL_t *tbl|NN const void *sv
@@ -1531,7 +1531,7 @@ s |void * |more_bodies    |const svtype sv_type
 s      |bool   |sv_2iuv_common |NN SV *const sv
 s      |void   |glob_assign_glob|NN SV *dstr|NN SV *sstr|const int dtype
 s      |void   |glob_assign_ref|NN SV *dstr|NN SV *sstr
-sRn    |PTR_TBL_ENT_t *|ptr_table_find|NN PTR_TBL_t *tbl|NN const void *sv
+sRn    |PTR_TBL_ENT_t *|ptr_table_find|NN PTR_TBL_t *tbl|NULLOK const void *sv
 #endif
 
 #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
@@ -1699,7 +1699,7 @@ p |void   |free_tied_hv_pool
 #if defined(DEBUGGING)
 pR     |int    |get_debug_opts |NN const char **s|bool givehelp
 #endif
-Ap     |void   |save_set_svflags|NULLOK SV* sv|U32 mask|U32 val
+Ap     |void   |save_set_svflags|NN SV* sv|U32 mask|U32 val
 Apod   |void   |hv_assert      |NN HV* tb
 
 ApdR   |SV*    |hv_scalar      |NN HV* hv
diff --git a/proto.h b/proto.h
index ebdd866..7ee28c1 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -2245,8 +2245,7 @@ PERL_CALLCONV void        Perl_sv_vcatpvf(pTHX_ SV* sv, const char* pat, va_list* args)
                        __attribute__nonnull__(pTHX_2);
 
 PERL_CALLCONV void     Perl_sv_catpv(pTHX_ SV* sv, const char* ptr)
-                       __attribute__nonnull__(pTHX_1)
-                       __attribute__nonnull__(pTHX_2);
+                       __attribute__nonnull__(pTHX_1);
 
 /* PERL_CALLCONV void  Perl_sv_catpvn(pTHX_ SV* sv, const char* ptr, STRLEN len)
                        __attribute__nonnull__(pTHX_1)
@@ -2286,9 +2285,7 @@ PERL_CALLCONV OP* Perl_sv_compile_2op(pTHX_ SV* sv, OP** startp, const char* cod
 PERL_CALLCONV int      Perl_getcwd_sv(pTHX_ SV* sv)
                        __attribute__nonnull__(pTHX_1);
 
-PERL_CALLCONV void     Perl_sv_dec(pTHX_ SV* sv)
-                       __attribute__nonnull__(pTHX_1);
-
+PERL_CALLCONV void     Perl_sv_dec(pTHX_ SV* sv);
 PERL_CALLCONV void     Perl_sv_dump(pTHX_ SV* sv)
                        __attribute__nonnull__(pTHX_1);
 
@@ -2315,9 +2312,7 @@ PERL_CALLCONV char*       Perl_sv_gets(pTHX_ SV* sv, PerlIO* fp, I32 append)
 PERL_CALLCONV char*    Perl_sv_grow(pTHX_ SV *const sv, STRLEN newlen)
                        __attribute__nonnull__(pTHX_1);
 
-PERL_CALLCONV void     Perl_sv_inc(pTHX_ SV* sv)
-                       __attribute__nonnull__(pTHX_1);
-
+PERL_CALLCONV void     Perl_sv_inc(pTHX_ SV* sv);
 PERL_CALLCONV void     Perl_sv_insert(pTHX_ SV* bigsv, STRLEN offset, STRLEN len, const char* little, STRLEN littlelen)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_4);
@@ -2711,8 +2706,7 @@ PERL_CALLCONV void        Perl_sv_vcatpvf_mg(pTHX_ SV* sv, const char* pat, va_list* ar
                        __attribute__nonnull__(pTHX_2);
 
 PERL_CALLCONV void     Perl_sv_catpv_mg(pTHX_ SV *sv, const char *ptr)
-                       __attribute__nonnull__(pTHX_1)
-                       __attribute__nonnull__(pTHX_2);
+                       __attribute__nonnull__(pTHX_1);
 
 /* PERL_CALLCONV void  Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len)
                        __attribute__nonnull__(pTHX_1)
@@ -2927,7 +2921,6 @@ PERL_CALLCONV void        Perl_rvpv_dup(pTHX_ SV* dstr, const SV *sstr, CLONE_PARAMS* p
                        __attribute__nonnull__(pTHX_3);
 
 PERL_CALLCONV yy_parser*       Perl_parser_dup(pTHX_ const yy_parser *proto, CLONE_PARAMS* param)
-                       __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 
 #endif
@@ -4036,8 +4029,7 @@ STATIC void       S_glob_assign_ref(pTHX_ SV *dstr, SV *sstr)
 
 STATIC PTR_TBL_ENT_t * S_ptr_table_find(PTR_TBL_t *tbl, const void *sv)
                        __attribute__warn_unused_result__
-                       __attribute__nonnull__(1)
-                       __attribute__nonnull__(2);
+                       __attribute__nonnull__(1);
 
 #endif
 
@@ -4378,7 +4370,9 @@ PERL_CALLCONV int Perl_get_debug_opts(pTHX_ const char **s, bool givehelp)
                        __attribute__nonnull__(pTHX_1);
 
 #endif
-PERL_CALLCONV void     Perl_save_set_svflags(pTHX_ SV* sv, U32 mask, U32 val);
+PERL_CALLCONV void     Perl_save_set_svflags(pTHX_ SV* sv, U32 mask, U32 val)
+                       __attribute__nonnull__(pTHX_1);
+
 PERL_CALLCONV void     Perl_hv_assert(pTHX_ HV* tb)
                        __attribute__nonnull__(pTHX_1);