HertzDevil / 0CC-FamiTracker

Extension of jsr's FamiTracker
http://0cc-famitracker.tumblr.com/
GNU General Public License v2.0
308 stars 32 forks source link

In the Groove field (same location as Speed), using down increment arrow crashes 0CC-FamiTracker only if there are no populated groove values left to move to #81

Open teimoso opened 6 years ago

teimoso commented 6 years ago

Description

If the target Groove position is less than the current Groove position, and the user uses the Groove field's down arrow to access the target groove, 0CC-FamiTracker will crash (no immediate exit; appears to hang).

This crash does not occur:     if you type the target Groove instead of using the down arrow to access it     if Groove position 00 is populated

Example (asterisks denote a populated groove value)

The groove list of a module looks like this:

00  
01  
02 *
03
04 *
05 *
06 *
07 *
08
09 *
[...]

The user's Groove position is 06. They click the up arrow, moving to 07, then click again, which skips 08 and moves to 09. If the user clicks the up arrow again, their Groove position will remain at 09. This seems to be the intended behavior. After this, the user goes back to Groove 06. They click down twice, moving to 04, then click again, which skips 03 and moving to 02. After clicking down yet again, 0CC-FamiTracker will crash instead of remaining at position 02. If 00 was populated, 01 would be skipped and there would be no crash.

Reproduction

With populated values

  1. In any(?) project, enter the Groove Settings.
  2. Populate any list entries except for 00.
  3. After applying Groove changes, switch from Speed mode to Groove mode.
  4. Use the down arrow until you reach 00, or type in the populated entry just above 00. If the reproduction is successful, the tracker will crash.

Without populated values

  1. Switch from Speed mode to Groove mode.
  2. Click the down arrow once.

System Specification

Operating System Windows 7 (64-bit, Home Premium) Processor Intel Core i7 Q 720 @ 1.60GHz

Let me know if more information is needed.