TCH (statz) | #1, Főfasz (10466) |
3011 | #21ba | ^ | Idézet | Sun, 18 Nov 2012 12:16:12 +01 |
31.46.*.* | *.catv.pool.telekom.hu |
Miért csak a multit? Ja, ez tényleg jó. Bár szerintem a kiadók meg a többi csak egy része, inkább a mesterségesen gyártott celebekről, meg a konzumszemétről szól. De tényleg jó. Basszátok meg, az egész tegnap arra ment el, hogy kidebuggoljak egy olyan algoritmust, amiben nem volt hiba. Most csinálom az Amiga2PC parallel cuccnak a normális, GUI-s, időzített várakoztatású verzióját és tegnap amikor a dir() implementációt írtam, folyton csak a legelső könyvtárbejegyzést adta vissza végtelenítve. Egyszerűen nem értettem. Ez volt reggel. Aztán a nap folyamán szilánkokra cincáltam az algoritmust mind a két oldalon és a végén már nem debuggoltam, hanem bugokat gyártottam. A "legviccesebb" az volt, amikor a PC-s oldalon a bufferolvasó függvénybe beleraktam, hogy adja már vissza, hogy mennyi byte-ot olvasott a portról. A baj csak az volt, hogy a bufferolvasó úgy volt beépítve, hogy csak 0-át vagy -1-et adhat vissza és ha az eredmény nem 0, akkor a meghívó Dir procedura kiszáll, hogy hibás bufferolvasás volt. Nem voltam ám már fáradt, amikor ezt a baromságot elkövettem. Aztán még N óra szopás után, kb hajnali 1-kor sikerült eljutnom egy olyan kiegyszerűsített szintre az Amigás kóddal, hogy amennyiben hozzányúltam a timer függvényhez, elbaszódott a dirlist; ha nem tettem, kilistázott mindent. Ezen konkrétan beszartam. Átnéztem a timer függvényt, hogy mit baszhattam el, de azt a kódot igazából innen nyúltam, vagyis nem is baszhattam el. A SASC persze folyamatosan reklamált, hogy a timeval-os struct nincs inicaializálva, dehát azt már akkor is csinálta, amikor összeollóztam a timer kódját és minden működött vele, gyönyörűen várakozik az Amiga. Viszont más ötlet híján fogtam és beírtam, hogy tv = malloc(sizeof(struct timeval)); És ment. És ment bazdmeg. És az egész kurwa nap azzal ment el, hogy kijavítsam az ezek szerint hibátlan stream-transfer algoritmust. Hirtelen egyébként nem is értettem, hogy mi a franc van (ekkor már hajnali 2 volt, lassan már 16. órája ültem felette), aztán leesett, hogy azért van, mert az Amiga behajigálja a cuccokat a stack-be és mivel nem allokáltam azt a szart, ezért a következő körben a FileInfoBlock struct szépen ugyanoda került, mint a timeval. A timeval-t ez nem zavarta, amikor meghívásra került ő úgyis inicializálta maga alatt az adatokat (ezért működött), az előző körben lekért FileInfoBlock viszont felülíródott és ezért, amikor jött a dnext(), akkor megint elölről kezdte beolvasni az egészet. Tanulság, az összes struct-ot allokálni kell, mert lehet, hogy az a cucc, amiben használod, működik allokálás nélkül is, de mást viszont gajraverhet. |