Load now the first icon from the *.ani file instead of crashing.
diff --git a/objects/cursoricon.c b/objects/cursoricon.c index 2fb2914..30a8870 100644 --- a/objects/cursoricon.c +++ b/objects/cursoricon.c
@@ -227,6 +227,29 @@ *res = NULL; *ptr = NULL; if (!(bits = (CURSORICONFILEDIR *)VIRTUAL_MapFileW( filename ))) return FALSE; + + /* FIXME: test for inimated icons + * hack to load the first icon from the *.ani file + */ + if ( *(LPDWORD)bits==0x46464952 ) /* "RIFF" */ + { LPBYTE pos = (LPBYTE) bits; + FIXME (cursor,"Animated icons not correctly implemented! %p \n", bits); + + for (;;) + { if (*(LPDWORD)pos==0x6e6f6369) /* "icon" */ + { FIXME (cursor,"icon entry found! %p\n", bits); + pos+=4; + if ( !*(LPWORD) pos==0x2fe) /* iconsize */ + { goto fail; + } + bits+=2; + FIXME (cursor,"icon size ok %p \n", bits); + break; + } + pos+=2; + if (pos>=(LPBYTE)bits+766) goto fail; + } + } if (!(entries = bits->idCount)) goto fail; (int)_free = size = sizeof(CURSORICONDIR) + sizeof(CURSORICONDIRENTRY) * (entries - 1);