]> git.alsa-project.org Git - alsa-utils.git/commitdiff
speaker-test: Fix floating-point exception bug
authorTakashi Iwai <tiwai@suse.de>
Wed, 26 Nov 2008 13:27:24 +0000 (14:27 +0100)
committerTakashi Iwai <tiwai@suse.de>
Wed, 26 Nov 2008 13:27:24 +0000 (14:27 +0100)
The period_size an buffer_size parameters must be taken after calling
snd_pcm_hw_params().  Otherwise they could be undefined numbers.
For example, period_size gets 0 when pcsp driver is used, resulting in
a floating-point exception error.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
speaker-test/speaker-test.c

index d40342fa95106d9fb47779b399ff06f525992c2d..75a4bed3e690be207e29fffc4fde6e24067444d2 100644 (file)
@@ -422,6 +422,14 @@ static int set_hwparams(snd_pcm_t *handle, snd_pcm_hw_params_t *params, snd_pcm_
       return err;
     }
   }
+
+  /* write the parameters to device */
+  err = snd_pcm_hw_params(handle, params);
+  if (err < 0) {
+    fprintf(stderr, _("Unable to set hw params for playback: %s\n"), snd_strerror(err));
+    return err;
+  }
+
   snd_pcm_hw_params_get_buffer_size(params, &buffer_size);
   snd_pcm_hw_params_get_period_size(params, &period_size, NULL);
   printf(_("was set period_size = %lu\n"),period_size);
@@ -431,13 +439,6 @@ static int set_hwparams(snd_pcm_t *handle, snd_pcm_hw_params_t *params, snd_pcm_
     return -EINVAL;
   }
 
-  /* write the parameters to device */
-  err = snd_pcm_hw_params(handle, params);
-  if (err < 0) {
-    fprintf(stderr, _("Unable to set hw params for playback: %s\n"), snd_strerror(err));
-    return err;
-  }
-
   return 0;
 }