cvsuser     04/12/17 01:58:17

  Modified:    ops      pmc.ops
               src      inter_run.c
  Log:
  remove old cruft
  * runops_fromc is for running Subs - catch NULL address
  * revert change to get_repr that could hide external bugs
  
  Revision  Changes    Path
  1.34      +2 -3      parrot/ops/pmc.ops
  
  Index: pmc.ops
  ===================================================================
  RCS file: /cvs/public/parrot/ops/pmc.ops,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- pmc.ops   16 Dec 2004 10:37:15 -0000      1.33
  +++ pmc.ops   17 Dec 2004 09:58:16 -0000      1.34
  @@ -207,9 +207,8 @@
   
   =cut
   
  -inline op get_repr(out STR, in PMC) {
  -    STRING *s = $2->vtable->get_repr(interpreter, $2);
  -    $1 = s;
  +op get_repr(out STR, in PMC) {
  +    $1 = $2->vtable->get_repr(interpreter, $2);
       goto NEXT();
   }
   
  
  
  
  1.26      +13 -13    parrot/src/inter_run.c
  
  Index: inter_run.c
  ===================================================================
  RCS file: /cvs/public/parrot/src/inter_run.c,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- inter_run.c       15 Dec 2004 08:45:48 -0000      1.25
  +++ inter_run.c       17 Dec 2004 09:58:16 -0000      1.26
  @@ -1,6 +1,6 @@
   /*
   Copyright: 2001-2003 The Perl Foundation.  All Rights Reserved.
  -$Id: inter_run.c,v 1.25 2004/12/15 08:45:48 leo Exp $
  +$Id: inter_run.c,v 1.26 2004/12/17 09:58:16 leo Exp $
   
   =head1 NAME
   
  @@ -131,11 +131,11 @@
        * Passing a dummy true destination copies registers
        */
       dest = VTABLE_invoke(interpreter, sub, (void*) 1);
  +    if (!dest)
  +        internal_exception(1, "Subroutine retuned a NULL address");
       bp = interpreter->ctx.bp;
  -    if (dest) {
  -        offset = dest - interpreter->code->byte_code;
  -        runops(interpreter, offset);
  -    }
  +    offset = dest - interpreter->code->byte_code;
  +    runops(interpreter, offset);
       REG_PMC(1) = p1;
       return bp;
   }
  @@ -232,6 +232,8 @@
       interpreter->ctx.current_cont = ret_c;
       interpreter->ctx.current_object = obj;
       dest = VTABLE_invoke(interpreter, sub, NULL);
  +    if (!dest)
  +        internal_exception(1, "Subroutine retuned a NULL address");
   
       /*
        * count arguments, check for overflow
  @@ -343,10 +345,8 @@
       }
   
       bp = interpreter->ctx.bp;
  -    if (dest) {
  -        offset = dest - interpreter->code->byte_code;
  -        runops(interpreter, offset);
  -    }
  +    offset = dest - interpreter->code->byte_code;
  +    runops(interpreter, offset);
       return bp;
   }
   
  @@ -425,11 +425,11 @@
       REG_PMC(1) = new_ret_continuation_pmc(interpreter, NULL);
       interpreter->ctx.current_object = obj;
       dest = VTABLE_invoke(interpreter, sub, (void*)1);
  +    if (!dest)
  +        internal_exception(1, "Subroutine retuned a NULL address");
       bp = interpreter->ctx.bp;
  -    if (dest) {
  -        offset = dest - interpreter->code->byte_code;
  -        runops(interpreter, offset);
  -    }
  +    offset = dest - interpreter->code->byte_code;
  +    runops(interpreter, offset);
       REG_PMC(1) = p1;
       REG_PMC(2) = p2;
       REG_STR(0) = s0;
  
  
  

Reply via email to