Maybe set the check to :

      if(rx->startindex-- == 0)

-Melvin Smith

IBM :: Atlanta Innovation Center
[EMAIL PROTECTED] :: 770-835-6984


                                                                                       
                                               
                      Andy Dougherty                                                   
                                               
                      <doughera@lafayet        To:       Perl6 Internals 
<[EMAIL PROTECTED]>                                   
                      te.edu>                  cc:                                     
                                               
                                               Subject:  gcc warnings: rx->startindex  
                                               
                      01/15/2002 01:47                                                 
                                               
                      PM                                                               
                                               
                                                                                       
                                               
                                                                                       
                                               




Ok, I've been paging through the hundreds of errors spewn out by gcc
with the new -Wkitchen_sink warnings.  Some are pretty clear, but
many others raise questions I'm unsure how to answer.

For example, given the following structure in "parrot/rx.h"
(note that startindex is unsigned):

    typedef struct rxinfo {
     STRING *string;
     UINTVAL index;
     UINTVAL startindex;
     BOOLVAL success;

     rxflags flags;
     UINTVAL minlength;
     rxdirection whichway;

     PMC *groupstart;
     PMC *groupend;

     opcode_t *substfunc;

     struct Stack_chunk_t* stack;
    } rxinfo;

gcc-2.8 rightfully complains that in the following bit of code from
rx.ops, rx->startindex can never be < 0.

    op rx_advance(in pmc, in int) {
     RX_dUNPACK($1);

     if(!RxReverse_test(rx)) {
      if(++rx->startindex + rx->minlength > string_length(rx->string)) {
       goto OFFSET($2);
      }
     }
     else {
      if(--rx->startindex < 0) {
       goto OFFSET($2);
      }
     }


Does anyone know if the correct fix to make startindex signed, eliminate
the
unreachable branch, put an assert() in somewhere, ignore the message,
or do something else clever?

--
    Andy Dougherty            [EMAIL PROTECTED]
    Dept. of Physics
    Lafayette College, Easton PA 18042



Reply via email to