OSDN Git Service

Fixed possible crash when dwSamplePeriod is 0.
authorKentaro Sato <kentaro@ps.catv.ne.jp>
Wed, 21 Sep 2005 17:33:49 +0000 (17:33 +0000)
committerKentaro Sato <kentaro@ps.catv.ne.jp>
Wed, 21 Sep 2005 17:33:49 +0000 (17:33 +0000)
ChangeLog
timidity/smplfile.c

index 0f4b797..a4a5797 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-09-22  Kentaro Sato <kentaro@ranvis.com>
+
+       * timidity/smplfile.c: Fixed possible crash when Sampler chunk's
+         dwSamplePeriod is erroneously 0.
+
 2005-05-08  URABE Shyouhei  <shyouhei@ice.uec.ac.jp>
 
        * timidity/timidity.c (dynamic_interface_module): rewrite.
index 6b552cf..f24413b 100755 (executable)
@@ -402,7 +402,7 @@ static int import_wave_load(char *sample_file, Instrument *inst)
                int32           sample_rate, root_freq;
                uint32          loopStart, loopEnd;
                
-               sample_rate = 1000000000 / samplerc.dwSamplePeriod;
+               sample_rate = samplerc.dwSamplePeriod == 0 ? 0 : 1000000000 / samplerc.dwSamplePeriod;
                root_freq = freq_table[samplerc.dwMIDIUnityNote];
                if (samplerc.dwMIDIPitchFraction != 0
                                && samplerc.dwMIDIUnityNote != 127)     /* no table data */
@@ -425,7 +425,8 @@ static int import_wave_load(char *sample_file, Instrument *inst)
                for(i = 0; i < samples; i++)
                {
                        sample = &inst->sample[i];
-                       sample->sample_rate = sample_rate;
+                       if (sample_rate != 0)
+                               sample->sample_rate = sample_rate;
                        sample->root_freq = root_freq;
                        if (modes != 0)
                        {