http://bugs.winehq.org/show_bug.cgi?id=30234
Bug #: 30234 Summary: CSoundManager::Create fails on file names with >= 156 characters Product: Wine Version: 1.4 Platform: x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-dsound AssignedTo: wine-bugs@winehq.org ReportedBy: sarastro.admin+wine@googlemail.com Classification: Unclassified
Steps to reproduce:
- Download an application that loads sound files. I used the „PlaySound“ example from the DirectX Samples, available from the SDK at http://www.microsoft.com/download/en/details.aspx?id=21416 (together with the source).
- Create a set of test files with increasing file name length. I used the following command (where Sifa.wav is a dummy wave file):
for i in `seq 10 156`; do let j=$i-3-${#i}; name=`seq -s "_" $j | sed 's/[0-9]//g'`; cp Sifa.wav $i$name.wav; done
- Create a list of the files and their full name length (it is important to use the full Wine path here):
find /home/jojo/.wine/dosdevices/z:/Zusi3/SoundTest/ | awk '{ print length, $0 }' | sort -n
- Launch the test program and try to open any of the test files.
Observation: - Any test file whose complete name is less than 155 characters long can be loaded and played without problem - On any test file with a name greater than or equal to 156 characters an error message "Could not create sound buffer." is displayed.
The relevant code from the sample is
if( FAILED( hr = g_pSoundManager->Create( &g_pSound, strFileName, 0, GUID_NULL ) ) ) { … (display error) }
where "strFileName" is defined as "static TCHAR strPath[MAX_PATH]" and "g_pSoundManager" is defined as "CSoundManager*".