[PD] Bug in pool?
Thomas Grill
gr at grrrr.org
Tue Apr 19 14:56:14 CEST 2005
Hi Frank,
thanks for your report. It seems the only (cheap) way of storing
arbitrary symbols is to escape them with " ".
I've done so now - will be mirrored to the SF cvs shortly.
best greetings,
Thomas
Frank Barknecht schrieb:
>Hallo,
>Frank Barknecht hat gesagt: // Frank Barknecht wrote:
>
>
>
>>attached is an example of a possible bug in the way, [pool] saves
>>symbols starting with a number. This seems to be a new bug, as it was
>>working in previous versions of pool, but is not in current CVS pool.
>>
>>The correct data is stored, but loading seems to go wrong.
>>
>>
>
>Hm, I found, where it goes wrong:
>
>In pool.cpp, method: "static char *ReadAtom(char *c,A *a)" there is a
>check if a key is a float, which also detects strings like "10x20" as
>floats:
>
> // ...
> // save character and set delimiter
>
> float fres;
> // first try float
> if(sscanf(tmp,"%f",&fres) == 1) {
> if(a) {
> int ires = (int)fres; // try a cast
> if(fres == ires)
> flext::SetInt(*a,ires);
> else
> flext::SetFloat(*a,fres);
> }
> }
> // no, it's a symbol
> else {
> if(a) flext::SetString(*a,tmp);
> }
> // ...
>
>
>"sscanf(tmp,"%f",&fres)" returns "1" for all strings which *start* with a
>digit, even if they later include alphabetic characters.
>
>Now, does anyone know, how to better check for real floats?
>
>Ciao
>
>
More information about the Pd-list
mailing list