"Jakmile příjemce obdrží zprávu obsahující daný znak, nebo tento znak na klávesnici napíše, zařízení nebo aplikace spadne a odmítne normálně fungovat, dokud znak není odstraněn. To se dá ve většině případů vyřešit např. výmazem celého vlákna konverzace. Apple už o chybě ví a intenzivně pracuje na její nápravě."
Může prosím někdo dovysvětlit? Z tohoto odstavce se zdá, že aplikace, která odmítá fungovat, magicky umožňuje smazání vlákna konverzace. Podle odkazovaného článku je obvykle potřeba poslat jinou zprávu z jiného zařízení - předpokládám, že proto, že pak místo nezpracovatelné zprávy bude zobrazovat jen tu novou. Ale pak stačí jen neotevírat to staré vlákno, ne?
Taky jsem se nad tím zamyslel. Nicméně tak, jak je to popsané v článku, se mi to zdá dostatečné (jsou to postřehy, více ví Google).
Ale předpokládám, že jakmile se ten znak má zobrazit nebo jinak interpretovat, tak iDevice dostane infarkt. Takže stačí ten znak nezobrazovat, třeba právě tak, že smažu vlákno bez toho, abych musel vidět jeho obsah. Negooglil jsem to, jen to předpokládám.
Nehledal jsem co je tohle konkrétně za chybu, ale jako první myšlenka mě napadla chyba v interpretru definice fontu (tedy zobrazení konkrétního fontu). Domnívám se, že to není chyba algoritmu, který jenom zpracovává znaky ve formě "sekvencí neinterpretovaných bajtů".
Dovolím si tedy oponovat Vašemu tvrzení s tím, že takový test všech Unicode znaků by zřejmě nepomohl, protože aby chybu objevili, museli by k testování použít přesně tu implementaci a verzi fontu, která je použitá ve finálním produktu. Což v případě tak velkého produktu jako iPhone apod. nevypadá reálně a vývojáři s nejvyšší pravděpodobností testovali s jiným fontem a nebo stejným, avšak jinou verzzí.
To je řada domněnek. Opravdu spadne interpretr? Není to třeba o tom, že vyhodí výjimku a nějaká metoda o kus výš jí nezpracuje správně? Je to opravdu nevalidní sekvence? Není to třebas ve skutečnosti nějaké magic number, které programátor kdysi použil v domnění, že v reálném textu se nikdy nevyskytne? A co když je tohle všechno validní a problém je v jiných datech? Já jsem kupříkladu zažil hru, co padala s českým fontem prostě proto, že autor nepočítal s tím, že by některý znak mohl být tisknutelný a přesto mít na šířku 0 pixelů. Takže vše fungovalo do chvíle, než se v textu objevila dvojice znaků ˇr, kdy právě ten háček měl v definici fontu "po vytištění se posuň doprava o 0 pixelů". Takže uvěřím, že problém může ve skutečnosti být v datech (respektive v chybném předpokladu o povaze dat), třebas v těch fontech, a interpreter opravdu nemá problém s tím textem jako takovým.