Changeset 4184 for src/perl5

Show
Ignore:
Timestamp:
05/31/05 03:47:07 (4 years ago)
Author:
autrijus
svk:copy_cache_prev:
5706
Message:

* handle multiple return values. It segfaults still --

clkao, please take a look.

Location:
src/perl5
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • src/perl5/perl5.c

    r4086 r4184  
    209209} 
    210210 
    211 SV * 
     211SV ** 
    212212perl5_apply(SV *sub, SV *inv, SV** args, void *env, int cxt) 
    213213{ 
    214214    SV **arg; 
     215    SV **out; 
    215216    SV *rv; 
    216217    SV *sv; 
     
    243244    SPAGAIN; 
    244245 
    245     if (count == 1) { 
    246         rv = newSVsv(POPs); 
    247     } 
    248     else { 
    249         rv = (SV *)newAV(); 
    250         for (i=0; i<count; ++i) { 
    251             av_push ((AV *)rv, POPs); 
    252         } 
     246    /* fprintf(stderr, "%d is count\n", count); */ 
     247    Newz(42, out, count+1, SV*); 
     248 
     249    for (i=0; i<count; ++i) { 
     250        out[i] = newSVsv(POPs); 
    253251    } 
    254252 
     
    258256 
    259257    pugs_setenv(old_env); 
    260     return rv; 
     258    return out; 
    261259} 
    262260 
  • src/perl5/perl5.h

    r3975 r4184  
    1111SV * perl5_newSViv ( int iv ); 
    1212SV * perl5_newSVnv ( double iv ); 
    13 SV * perl5_apply(SV *sub, SV *inv, SV** args, void *env, int cxt); 
     13SV ** perl5_apply(SV *sub, SV *inv, SV** args, void *env, int cxt); 
    1414bool perl5_can(SV *inv, char *subname); 
    1515SV * perl5_eval(char *code, void *env, int cxt);