[Bf-committers] gcc 3.4.1 released, blender still wont compile.

Campbell Barton bf-committers@blender.org
Sun, 04 Jul 2004 16:27:00 +1000


Hi, gcc 3.4 was relesed a while ago and was supposed to have some good 
improvements.
It had a but when compiling inline ASM for MMX (had to disable mmx 
o0ptizimations for the gimp and cinelerra) but blender wouldent compile.

3.4.1 has been released and compiles the gimp no problems but blender 
still raises errors.

gcc 3.4.1 msg
source/blender/blenkernel/intern/exotic.c:1196: error: invalid operands 
to binary -the line

*i= (long)(strpbrk(cpa, ", \n")-cpa);  *


see below for an extract.

static int iv_finddata(struct IvNode *iv, char *field, int fieldnr)
{
    /* search for "field", count data size and make datablock. return 
skipdata */
    float *fp;
    int len, stackcount, skipdata=0;
    char *cpa, terminator, str[64];
    long i;
   
    len= strlen(field);

    cpa= iv->nodename+1;
    while( *cpa != '}' ) {
       
        if( *cpa == *field ) {
            if( strncmp(cpa, field, len)==0 ) {
                iv->fieldname[fieldnr]= cpa;
               
                /* read until first character */
                cpa+= len;
                skipdata+= len;
                *cpa= 0;
                cpa++;
                skipdata++;
               
                while( *cpa==32 || *cpa==13 || *cpa==10 || *cpa==9) cpa++;
                if( *cpa=='[' ) {
                    terminator= ']';
                    cpa++;
                    skipdata++;
                }
                else terminator= 13;
               
                stackcount= 0;
                fp= iv_data_stack;
               
                while( *cpa!=terminator && *cpa != '}' ) {
                   
                    /* in fact, isdigit should include the dot and minus */
                    if( (isdigit(*cpa) || *cpa=='.' || *cpa=='-') && 
(isspace(cpa[-1]) || cpa[-1]==0 || cpa[-1]==',') ) {
                        if(cpa[1]=='x') {
                            memcpy(str, cpa, 16);
                            str[16]= 0;
                           
                            sscanf(str, "%x", (int *)fp);
                        }
                        else {
                            /* atof doesn't stop after the first float
                             * in a long string at Windows... so we copy
                             * the float to a new string then atof... */
                             
                            *i= (long)(strpbrk(cpa, ", \n")-cpa);*
                           
                            if (i>63) *fp= 0.0;
                            else {
                                memcpy(str, cpa, i);
                                str[i]=0;