Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Gde je ovde bag?

[es] :: C programiranje :: Gde je ovde bag?

[ Pregleda: 1090 | Odgovora: 10 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

pisac
Informatika & Telekomunikacije
Beograd

Član broj: 13046
Poruke: 1800
195.252.89.*



Profil

icon Gde je ovde bag?19.01.2006. u 23:52

Nisam programer, ali me mnogo zanima sledeće:

U jednoj aplikaciji postoji bag (1), i bag je ispravljen (2). Ali ja nikako da ukapiram gde je tu promena. Sve je isto ali obrnuto napisano.

1)
Code:

if (!IS_DIGITAL(ast->transfercapability)) 
{
    set_actual_gain(p->subs[SUB_REAL].zfd, 0, p->rxgain, p->txgain, p->law); 

else 

    set_actual_gain(p->subs[SUB_REAL].zfd, 0, 0, 0, p->law); 
}   


2)
Code:

if (IS_DIGITAL(ast->transfercapability)) 
{
    set_actual_gain(p->subs[SUB_REAL].zfd, 0, 0, 0, p->law); 
}
else
{
    set_actual_gain(p->subs[SUB_REAL].zfd, 0, p->rxgain, p->txgain, p->law); 
}   

Osnovni problem čovečanstva: http://eatliver.com/i.php?n=4227
Vraća se robovlasništvo: http://www.elitesecurity.org/p1477920
Nije siromašan ko malo ima, već ko mnogo želi!
19.01.2006. u 23:52 

Goran Arandjelovic
Goran Arandjelovic
Beograd

Moderator
Član broj: 29116
Poruke: 274
*.178.EUnet.yu.



Profil

icon Re: Gde je ovde bag?20.01.2006. u 14:59
Zaista ne vidim u čemu bi mogao da bude problem...
ako uzmeš najbanalniji primer...

Code:

#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
    bool x = true;
    int a = 0, b = 0;
    
    /*
    if(!x){
    a = 5;
    }else{
    b = 5;
    }*/
    
    if(x){
    b = 5;
    }else{
    a = 5;
    }
    
    cout << a << endl << b << endl;
}


Ove dve stvari su potpuno iste. Samo po sebi x, ili u tvom slucaju funkcija IS_DIGITAL, može biti SAMO true ili false i ništa treće pošto vraća bool, ne znam...
neka se javi još neko. Ovo (je!) odnosno deluje tako očigledno.
20.01.2006. u 14:59 

pisac
Informatika & Telekomunikacije
Beograd

Član broj: 13046
Poruke: 1800
195.252.89.*



Profil

icon Re: Gde je ovde bag?20.01.2006. u 15:50
Veruj mi, ni ja nisam shvatao ali zaista radi. Pitao sam tipa koji mi je poslao patch gde je tu razlika, a on je rekao da i on ne zna ali da mu je patch poslao programer koji je pisao softver i da zaista radi kad se primeni.

E, sad, ja izmenio tih nekoliko linija, iskompajlirao, i zaista radi!

Inače u pitanju je linux program za manipulisanje sa ISDN pozivima preko ISDN kartice. A problem sa (1) je što ne primenjuje rx/txgain iz konfiguracionog fajla prilikom odlaznih poziva (pa su preglasni u mom slučaju) ali dolazni rade kako treba. Kada primenim (2) i kompajliram, tada primenjuje rx/txgain i prilikom odlaznih i dolaznih poziva pa sve radi kako treba.

I šta ja sad da pomislim. Možda je bag do kompajlera?
Osnovni problem čovečanstva: http://eatliver.com/i.php?n=4227
Vraća se robovlasništvo: http://www.elitesecurity.org/p1477920
Nije siromašan ko malo ima, već ko mnogo želi!
20.01.2006. u 15:50 

bojan_bozovic
Sir Lancelot

Član broj: 29028
Poruke: 2345
*.pat-pool.le.sbb.co.yu.



Profil

icon Re: Gde je ovde bag?20.01.2006. u 15:54
IS_DIGITAL vraca true ili false kad ne bi trebalo.
20.01.2006. u 15:54 

Goran Arandjelovic
Goran Arandjelovic
Beograd

Moderator
Član broj: 29116
Poruke: 274
*.verat.net.



Profil

icon Re: Gde je ovde bag?20.01.2006. u 16:18
Ok...ali zasto bi to trebalo da ima bilo kakve veze sa onim uslovom koji je van te funckije? Da li je to bool promenljiva ili funkcija koja vraca bool, nema nikakve veze. Dakle, ako je problem u funkciji IS_DIGITAL, ne vidim zasto bi ovo bio patch za ovo...:)
20.01.2006. u 16:18 

bojan_bozovic
Sir Lancelot

Član broj: 29028
Poruke: 2345
*.pat-pool.le.sbb.co.yu.



Profil

icon Re: Gde je ovde bag?20.01.2006. u 19:27
Pa identicni su iskazi, i kompajler, ako ih ispravno evaluira dace identican ili ekvivalentan kod. My two cents. Dakle, ovo jedino ako je neki bag u kompajleru (s obzirom da je GNjU i ne cudi me uopste da i bude tako nesto).
20.01.2006. u 19:27 

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 3400
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Gde je ovde bag?20.01.2006. u 19:33
A sta ako je IS_DIGITAL neki (neispravan) makro? Ne bi trebalo, ali...



FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
20.01.2006. u 19:33 

pisac
Informatika & Telekomunikacije
Beograd

Član broj: 13046
Poruke: 1800
195.252.91.*



Profil

icon Re: Gde je ovde bag?20.01.2006. u 23:35
Dobio sam odgovor. IS_DIGITAL jeste makro!

Evo:

The problem results from the way the IS_DIGITAL() macro is defined in
include/asterisk/transcap.h:

#define IS_DIGITAL(cap)\
(cap) & AST_TRANS_CAP_DIGITAL ? 1 : 0

So the expression
!IS_DIGITAL(foo)
expands to
!(foo) & AST_TRANS_CAP_DIGITAL ? 1 : 0
which is equivalent to
( !(foo) ) & AST_TRANS_CAP_DIGITAL ? 1 : 0
while one would like to have
!( (foo) & AST_TRANS_CAP_DIGITAL ? 1 : 0 )

Rewriting the original statement removes the "!" operator and everything
is fine.

The two "if" statements would be equivalent (and both correct) if the
definition in transcap.h followed best practices to avoid problems with
operator precedence and looked like this:

#define IS_DIGITAL(cap)\
((cap) & AST_TRANS_CAP_DIGITAL ? 1 : 0)

Regards,
Mike
Osnovni problem čovečanstva: http://eatliver.com/i.php?n=4227
Vraća se robovlasništvo: http://www.elitesecurity.org/p1477920
Nije siromašan ko malo ima, već ko mnogo želi!
20.01.2006. u 23:35 

Goran Arandjelovic
Goran Arandjelovic
Beograd

Moderator
Član broj: 29116
Poruke: 274
*.97.eunet.yu.



Profil

icon Re: Gde je ovde bag?21.01.2006. u 00:34
Fino...lepo je što si ovo našao i postovao. Može biti od koristi. :)
Možda bih se setio da je makro u pitanju, ali ne tako brzo.
S tim što je logičnije da ovaj patch bude ispravka makroa, a ne granjanja u nekom drugom delu koda.

[Ovu poruku je menjao Goran Arandjelovic dana 21.01.2006. u 01:41 GMT+1]
21.01.2006. u 00:34 

bojan_bozovic
Sir Lancelot

Član broj: 29028
Poruke: 2345
*.pat-pool.le.sbb.co.yu.



Profil

icon Re: Gde je ovde bag?21.01.2006. u 01:57
Da ali onda to ne bi bio GNU sors. ;-)
21.01.2006. u 01:57 

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 3400
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Gde je ovde bag?21.01.2006. u 12:15
Jesam li polozio ;) ?

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
21.01.2006. u 12:15 

[es] :: C programiranje :: Gde je ovde bag?

[ Pregleda: 1090 | Odgovora: 10 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.