Den Wed, 16 Mar 2011 20:19:35 -0400 skrev Arne Vajhøj:
> On 16-03-2011 13:33, Kent Friis wrote:
>> Den Wed, 16 Mar 2011 18:20:40 +0100 skrev Leif Neland:
>>> I asterisk er der opstået en bug, måske har jeg fundet den
>>> Jeg har ellers ikke lavet noget c i dette millenium, men...
>>>
>>> i channels/chan_sip.c linie 12978
>>>
>>> I funktionens header er bl.a.
>>> int wildcard_found = 0;
>>> int single_binding_found;
>>>
>>> ... senere
>>> if (!strcasecmp(curi, "*")) {
>>> wildcard_found = 1;
>>> } else {
>>> single_binding_found = 1;
>>> }
>>>
>>> if (wildcard_found&& (ast_strlen_zero(expires) ||
>>> expire != 0 || single_binding_found)) {
>>> ...
>>> single_binding_found bliver ikke tildelt andre værdier nogetsteds; men
>>> da den ikke er initialiseret, kan den så ikke indeholde hvadsomhelst?
>>
>> Jo. En lokal variabel kan indeholde hvad der nu ligger på stack'en eller
>> i registret.
>>
>> Af samme grund compiler jeg mit eget kode med gcc -Wall -O1, da det
>> får compileren til at advare om den type fejl (uden -O1 opdager den ikke
>> den type fejl).
>
> Det sidste afhænger vist af version (og muligvis platform).
>
> GCC 4.4.2 på win32 giver warning med -Wall uanset -O.
Det var da på tide det blev rettet.
Mvh
Kent
--
"The Brothers are History"