FS#11590 - Skin parser chokes on too many nested conditionals (Ondio at least)
Opened by Marianne Arnold (pixelma) - Tuesday, 31 August 2010, 17:36 GMT
Last edited by Jonathan Gordon (jdgordon) - Sunday, 26 September 2010, 06:43 GMT
After an update to a current build (r27868)I got a problem with my theme on the Ondio which showed as "when it actually has to start playback and go to the WPS, then the player freezes with the 'loading' splash". This did not happen with other theme and so I did a bit of testing and found that the following line with nested conditionals was the culprit - the theme worked correctly before. Further testing went on with a test.wps that only contained this one line. It turned out that if I reduce the level of nesting by one, I get to the WPS but the player freezes after finishing buffering. If the nesting is reduced one more level, everything works correctly.
Here is the history of what I tried:
%s%?iG<%?iC<%iC|%iG>|%?id<%id|%?ia<. %?d(1)<%d(1)|Root>|.. %?d(2)<%d(2)|%?d(1)<%d(1)|Root>>>>>
2. replaced some unusual tags like %iG and %iC with more common ones but unfortunately I didn't keep it
3. simplified one level - fails on buffering when it has to take the else path (no title tag)
%?it<%it|%?ia<. %?d(1)<%d(1)|Root>|.. %?d(2)<%d(2)|%?d(1)<%d(1)|Root>>>>
4. one level less and this works
%?ia<. %?d(1)<%d(1)|Root>|.. %?d(2)<%d(2)|%?d(1)<%d(1)|Root>>>
Together with Lear in IRC I narrowed down when the issue started and he had some ideas what was going on (see logs at http://www.rockbox.org/irc/log-20100826#21:17:48 - 21:17 till 23:06). The issue started with revision 27846 (the %?if tag addition), I had to backport a fix for playback on hwcodec players which helped finding this. For testing purposes Lear provided a small "fix" about which he said that it'll break if I use %?if though but helps finding the root of the problem - here's the diff: http://pastie.org/1118815 .
Sunday, 26 September 2010, 06:43 GMT
Reason for closing: Fixed
Additional comments about closing: in r28167