At some point in the past, the meaning of a 0-length array at the end of a struct definition in C changed. With this change, static initialization of such an array with an arbitrary amount of data will fail, giving a warning message about excess elements in an initializer. DarcNES uses such an array to store information about the button mapping for joypad controllers. Reproducible: Always Steps to Reproduce: 1. emerge darcnes. 2. run darcnes on any NES, SMS, GG, PCE, SG-1000, etc. ROM. 3. try to play. Actual Results: Controller emulation is badly messed up, game is unplayable. Expected Results: Controller emulation should work reasonably well (arrows, a, s, [, and ]), game should be playable. Patch to fix problem should be as follows: diff -Naur old/ui.h new/ui.h --- old/ui.h 2000-06-28 21:06:05.000000000 -0400 +++ new/ui.h 2003-12-23 23:49:42.000000000 -0500 @@ -37,7 +37,7 @@ struct joypad_button_template { int num_buttons; - unsigned long buttons[0]; + unsigned long buttons[]; }; struct joypad {
Went ahead and added this to the ebuild. No rev bump. resync/remerge to get the chagne. Thanks for the bug report and patch.