• Sam Lantinga's avatar
    Fixed bug #46 · c8264f63
    Sam Lantinga authored
    Date: Fri, 13 Jan 2006 18:09:45 -0500
    From: mhall4400 vipmail kvcc edu
    Subject: Possible SDL bug
    
    Greetings
    
    I believe Ive come across a bug in your SDL product (1.2.9), in the CD-ROM
    control portion of the library.
    
    When calling the SDL_CDPlay() function to play the last track of a CD using the
    offset and length from an SDL_CD structure generated by SDL_CDOpen(), I get the
    following error from a call to SDL_Error():
    
    mciSendCommand() error: The specified parameter is out of range for the
    specified command.
    
    The code returning the error is:
    SDL_CDPlay(g_playingDriveSDLCD,
    g_playingDriveSDLCD->track[trackNumberInt].offset,
    g_playingDriveSDLCD->track[trackNumberInt].length)
    
    Subtracting one from the length of the provided length seems to repair the
    problem:
    SDL_CDPlay(g_playingDriveSDLCD,
    g_playingDriveSDLCD->track[trackNumberInt].offset,
    (g_playingDriveSDLCD->track[trackNumberInt].length) - 1)
    
    Ive replicated this problem on Windows 98 SE (several months since last
    patch), fully-patched Window ME, seldom-patched Windows XP SP1, and
    fully-patched Windows XP SP2.
    
    While investigating the issue, I came across a line in your librarys win32
    source code in file \src\cdrom\win32\SDL_syscdrom.c (source code zip archive
    from your download page), function: SDL_SYS_CDGetTOC(), line 226 where you add
    1 to the value for length to fix MCI last track length bug.  This may be the
    source of the issue (because subtracting 1 from the length seems to resolve the
    issue).  Microsoft may have patched the referenced bug since you wrote that
    line.
    
    Mike Hall
    
    --HG--
    extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401528
    c8264f63
Name
Last commit
Last update
..
aix Loading commit data...
beos Loading commit data...
bsdi Loading commit data...
dc Loading commit data...
dummy Loading commit data...
freebsd Loading commit data...
linux Loading commit data...
macos Loading commit data...
macosx Loading commit data...
mint Loading commit data...
openbsd Loading commit data...
os2 Loading commit data...
osf Loading commit data...
qnx Loading commit data...
win32 Loading commit data...
.cvsignore Loading commit data...
SDL_cdrom.c Loading commit data...
SDL_syscdrom.h Loading commit data...