2008-12-21

VM i nybörjarmisstag

Skulle fixa en bugg i min musikspelare och läste på lite mer noggrant om RDir-API:t, som i Symbian används för att läsa kataloger. Till Open() skickar man bland annat in en bitmask med filtyper som man vill ska komma med när man läser innehållet. Galet nog så är den första flaggan, KEntryAttNormal, definierad som 0, snarare än 1. Sedan kommer 1, 2, 4, 8 etc. Fråga: vad händer om man OR-ar ihop något med 0? Att det sen inte funkar som förväntat är inte speciellt förvånande. Det gick att hacka runt det, genom att kolla typen på filerna i efterhand, men kan jag verkligen vara den första som upptäckt detta? Jag noterar i förbifarten att det här problemet finns i både 9.2 och 9.4. Och med tanke på Symbians höga ambitioner när det gäller binär-kompatibilitet så lär det vara svårt att fixa.

Här är dokumentationen.

Mer kul: KEntryAttHidden innebär enligt dokumentationen "hidden file or directory". Vem hittar på sådana här vansinnigheter? Hela RDir-klassen är full av knark.

2 kommentarer:

Anonym sa...

Man OR:ar i C genom att skriva exempelvis

< VÄRDE > | < BITVÄRDE >

så nu är det väl inga problem eller? har hört att symbian är open source vem är förvånad med så konstiga apier.

puterman sa...

Tack, Leif, du slår alltid huvudet på spiken och pricken på i:et.