From: Zefram Date: Thu, 8 Dec 2011 21:03:02 +0000 (+0000) Subject: jump through hoops to avoid compiler warnings X-Git-Tag: 0.006009~4 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FDevel-Declare.git;a=commitdiff_plain;h=ec25cea764afbf3b9802c6833fc0b7bca960f94b jump through hoops to avoid compiler warnings --- diff --git a/Changes b/Changes index 70ca955..3d42a19 100644 --- a/Changes +++ b/Changes @@ -2,6 +2,7 @@ Changes for Devel-Declare - Fix a C declaration after statement, which broke compatibility with older compilers (Jan Dubois). + - Jump through some hoops to avoid compiler warnings. 0.006008 - 05 Nov 2011 - Adjust toke_scan_str logic to always leave the prefix part of diff --git a/Declare.xs b/Declare.xs index 5869056..4952520 100644 --- a/Declare.xs +++ b/Declare.xs @@ -63,6 +63,7 @@ int dd_is_declarator(pTHX_ char* name) { HV* is_declarator_pack_hash; SV** is_declarator_flag_ref; int dd_flags; + char* curstash_name; is_declarator = get_hv("Devel::Declare::declarators", FALSE); @@ -71,11 +72,12 @@ int dd_is_declarator(pTHX_ char* name) { /* $declarators{$current_package_name} */ - if (!HvNAME(PL_curstash)) + curstash_name = HvNAME(PL_curstash); + if (!curstash_name) return -1; - is_declarator_pack_ref = hv_fetch(is_declarator, HvNAME(PL_curstash), - strlen(HvNAME(PL_curstash)), FALSE); + is_declarator_pack_ref = hv_fetch(is_declarator, curstash_name, + strlen(curstash_name), FALSE); if (!is_declarator_pack_ref || !SvROK(*is_declarator_pack_ref)) return -1; /* not a hashref */ @@ -149,14 +151,17 @@ void dd_set_linestr(pTHX_ char* new_value) { PL_bufend = SvPVX(PL_linestr) + new_len; if ( DD_DEBUG_UPDATED_LINESTR && PERLDB_LINE && PL_curstash != PL_debstash) { - // Cribbed from toke.c - SV * const sv = NEWSV(85,0); - - sv_upgrade(sv, SVt_PVMG); - sv_setpvn(sv,PL_bufptr,PL_bufend-PL_bufptr); - (void)SvIOK_on(sv); - SvIV_set(sv, 0); - av_store(CopFILEAV(&PL_compiling),(I32)CopLINE(&PL_compiling),sv); + /* Cribbed from toke.c */ + AV *fileav = CopFILEAV(&PL_compiling); + if (fileav) { + SV * const sv = NEWSV(85,0); + + sv_upgrade(sv, SVt_PVMG); + sv_setpvn(sv,PL_bufptr,PL_bufend-PL_bufptr); + (void)SvIOK_on(sv); + SvIV_set(sv, 0); + av_store(fileav,(I32)CopLINE(&PL_compiling),sv); + } } } @@ -352,7 +357,7 @@ OP* dd_pp_entereval(pTHX) { const char* s; SV *sv; #ifdef PERL_5_9_PLUS - SV *saved_hh; + SV *saved_hh = NULL; if (PL_op->op_private & OPpEVAL_HAS_HH) { saved_hh = POPs; } diff --git a/stolen_chunk_of_toke.c b/stolen_chunk_of_toke.c index e231264..cbc1806 100644 --- a/stolen_chunk_of_toke.c +++ b/stolen_chunk_of_toke.c @@ -284,7 +284,7 @@ S_skipspace(pTHX_ register char *s, int incline) SSize_t oldprevlen, oldoldprevlen; SSize_t oldloplen = 0, oldunilen = 0; while (s < PL_bufend && isSPACE(*s)) { - if (*s++ == '\n' && ((incline == 2) || PL_in_eval && !PL_rsfp && !incline)) + if (*s++ == '\n' && ((incline == 2) || (PL_in_eval && !PL_rsfp && !incline))) incline(s); } @@ -385,13 +385,15 @@ S_skipspace(pTHX_ register char *s, int incline) * so store the line into the debugger's array of lines */ if (PERLDB_LINE && PL_curstash != PL_debstash) { - SV * const sv = NEWSV(85,0); - - sv_upgrade(sv, SVt_PVMG); - sv_setpvn(sv,PL_bufptr,PL_bufend-PL_bufptr); - (void)SvIOK_on(sv); - SvIV_set(sv, 0); - av_store(CopFILEAV(PL_curcop),(I32)CopLINE(PL_curcop),sv); + AV *fileav = CopFILEAV(PL_curcop); + if (fileav) { + SV * const sv = NEWSV(85,0); + sv_upgrade(sv, SVt_PVMG); + sv_setpvn(sv,PL_bufptr,PL_bufend-PL_bufptr); + (void)SvIOK_on(sv); + SvIV_set(sv, 0); + av_store(fileav,(I32)CopLINE(PL_curcop),sv); + } } } } @@ -815,13 +817,15 @@ S_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims) /* update debugger info */ if (PERLDB_LINE && PL_curstash != PL_debstash) { - SV *sv = NEWSV(88,0); - - sv_upgrade(sv, SVt_PVMG); - sv_setsv(sv,PL_linestr); - (void)SvIOK_on(sv); - SvIV_set(sv, 0); - av_store(CopFILEAV(PL_curcop), (I32)CopLINE(PL_curcop), sv); + AV *fileav = CopFILEAV(PL_curcop); + if (fileav) { + SV *sv = NEWSV(88,0); + sv_upgrade(sv, SVt_PVMG); + sv_setsv(sv,PL_linestr); + (void)SvIOK_on(sv); + SvIV_set(sv, 0); + av_store(fileav, (I32)CopLINE(PL_curcop), sv); + } } /* having changed the buffer, we must update PL_bufend */ @@ -863,39 +867,6 @@ S_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims) return s; } -/* - * S_force_next - * When the lexer realizes it knows the next token (for instance, - * it is reordering tokens for the parser) then it can call S_force_next - * to know what token to return the next time the lexer is called. Caller - * will need to set PL_nextval[], and possibly PL_expect to ensure the lexer - * handles the token correctly. - */ - -STATIC void -S_force_next(pTHX_ I32 type) -{ -#ifdef PERL_MAD - dVAR; - if (PL_curforce < 0) - start_force(PL_lasttoke); - PL_nexttoke[PL_curforce].next_type = type; - if (PL_lex_state != LEX_KNOWNEXT) - PL_lex_defer = PL_lex_state; - PL_lex_state = LEX_KNOWNEXT; - PL_lex_expect = PL_expect; - PL_curforce = -1; -#else - PL_nexttype[PL_nexttoke] = type; - PL_nexttoke++; - if (PL_lex_state != LEX_KNOWNEXT) { - PL_lex_defer = PL_lex_state; - PL_lex_expect = PL_expect; - PL_lex_state = LEX_KNOWNEXT; - } -#endif -} - #define XFAKEBRACK 128 STATIC char * @@ -961,12 +932,10 @@ S_scan_ident(pTHX_ register char *s, register const char *send, char *dest, STRL if (*s == '{') { bracket = s; s++; + } else if (ck_uni) { + /* we always call this with ck_uni == 0, so no need for check_uni() */ + /* check_uni(); */ } - /* we always call this with ck_uni == 0 (rafl) */ - /* - else if (ck_uni) - check_uni(); - */ if (s < send) *d = *s++; d[1] = '\0';