[TiLUG] problemi con gcc 4.0.0.1

__vroby__@libero.it vroby.mail@gmail.com
Gio 10 Maggio 2007 18:54:57 CEST


Marco Cabizza ha scritto:
> Il giorno gio, 10/05/2007 alle 17.47 +0200, vroby ha scritto:
>   
>> risono qui a rompere :-)
>>     
>
> 	Qualunque problema sia, l'hai testato solo su una versione di gcc 4.0 ?
> A quanto ho notato la 4.0 in sé ha molte "varietà" che sputano fuori
> warning molto imprevedibili a volte. Non so poi.
>
> 	In ogni caso che intendi con "comandi avanzati di string" ?
>
> Ciao
> ~marco
>
>   
appendo il sorgente:

il problema sembra essere in memset

ho appena provato a compilare (sempre su feisty) con il gcc 3.3 ma il 
problema persiste
il vecchio binario compilato in mdk funge bene e il codice compila anche 
su windows con mingw
dopo cena provero anche con la slax

 
//________________________________________________________________________________________________________________________________________

/*
this was my very old rutines for input used in 1995 on borland tc 
turbovision replacement project adapted
on SDLengine
*/
void _input(char *instring,int x, int y,int displen)
{
    #define k_delete    127
    #define k_up           273
    #define k_down      274
    #define k_right     275
    #define k_left      276
    #define k_insert      277
    #define k_home      278
    #define k_end          279
    #define k_pageup      280
    #define k_pagedown      281

    int i,n;
    int p,p1,pdisp;
    char provstring[255];
    char dispstring[255];
    int px;

    p=0;
    pdisp=0;
    strcpy(provstring,instring);
    p=strlen(provstring);
    printf("p=%d \n",p);//debug!!!


    if ((p-pdisp)>displen)pdisp=p-displen;
    if ((p-pdisp)<0)pdisp=p;
    strncpy(dispstring,provstring+pdisp,displen);
    memset(dispstring+displen,0,1);
    locate(x,y);fprints(dispstring);
    do{
    while (inkey()!=0);

    n=0;
    while(n==0){
        px=(p-pdisp);//*xdf;
        locate(x+px,y);
        n=inkey();
        if (key(k_left)){
        n=0;
        if(p>0){
            p--;
            break;
        }
        while(key(k_left));
        } //cleft

        if (key(k_right)){
        n=0;
        if(p<strlen(provstring)){
            p++;
        }
        break;

        while(key(k_right));
        } //crigth

        if (key(k_delete)){
        n=0;
        
if(p<strlen(provstring))memcpy(provstring+p,provstring+p+1,strlen(provstring)-p);
        while(key(k_delete));
        break;
        } //cancel

        if (key(k_home)){p=0;n=0;break;}//inizio
        if (key(k_end)){p=strlen(provstring);n=0;break;}//fine
    }

    if (n==13)break;

    if (n==8){
        n=0;
        if (p>0){
        memcpy(provstring+p-1,provstring+p,strlen(provstring)-p+1);
        p--;
        }
    }//backdel

    if (n==127){
         
if(p<strlen(provstring))memcpy(provstring+p,provstring+p+1,strlen(provstring)-p);
         n=0;
    }//delete

    if (n!=0 && strlen(provstring)<254){
        
for(p1=strlen(provstring);p1>=p;p1--){memcpy(provstring+p1+1,provstring+p1,1);}
        memset(&provstring+p,(char)n,1);//??
        printf("n=%c \n",n);//debug!!!

        memset(provstring+p+1,0,1);//???
        p++;
        printf("p=%d - len=%d \n",p,strlen(provstring));//debug!!!

    }

    if ((p-pdisp)>displen)pdisp=p-displen;
    if ((p-pdisp)<0)pdisp=p;

    printf("provstring=%s\n",provstring);//debug!!!
    strncpy(dispstring,provstring+pdisp,displen);
    memset(dispstring+displen,0,1);

    locate(x+strlen(dispstring),y);
    if(n==0)fprints(" ");
    if (n!=0 && stx[c_screen]==0 && 
sty[c_screen]+2>(screenheight()/(PRINT_SIZE)))y--;


    i=0;
    locate(x,y);
    //printf("dispstring=%s\n",dispstring);//debug!!!
    fprints(dispstring);
    //screenswap();

    }
    while (n !=13);
    strcpy (instring,provstring);
}
//_______________________________________________________________________________________________________________________

grazie

                                                                         
                                                         __vroby__



Maggiori informazioni sulla lista TiLUG