pcm: Fix integer size error.

The following code:

    while (pcm->boundary * 2 <= LONG_MAX - pcm->buffer_size)
		pcm->boundary *= 2;

Creates an infinite loop on systems where LONG_MAX != INT_MAX
(e.g. 64-bit systems).  pcm->boundary is an unsigned int, and so
INT_MAX is the proper value to use.
This commit is contained in:
Gabriel M. Beddingfield
2012-02-08 16:53:32 -06:00
parent 350211381a
commit 80085d470d
+1 -1
View File
@@ -558,7 +558,7 @@ struct pcm *pcm_open(unsigned int card, unsigned int device,
sparams.silence_threshold = config->silence_threshold;
pcm->boundary = sparams.boundary = pcm->buffer_size;
while (pcm->boundary * 2 <= LONG_MAX - pcm->buffer_size)
while (pcm->boundary * 2 <= INT_MAX - pcm->buffer_size)
pcm->boundary *= 2;
if (ioctl(pcm->fd, SNDRV_PCM_IOCTL_SW_PARAMS, &sparams)) {