| Index: third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
|
| diff --git a/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp b/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
|
| index 3954f121531c1dbed524d9ce6d377c7e4ed0e7f6..4f120b5bb65cceb6e9da08b792a657024302dbe2 100644
|
| --- a/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
|
| +++ b/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
|
| @@ -421,7 +421,14 @@ float AudioParamTimeline::valuesForFrameRangeImpl(
|
| // (assuming sampleRate = 1). Since time2 is greater than 128, we want to output a value
|
| // for frame 128. This requires that fillToEndFrame be at least 129. This is achieved by
|
| // ceil(time2).
|
| - size_t fillToEndFrame = std::min(endFrame, static_cast<size_t>(ceil(time2 * sampleRate)));
|
| + //
|
| + // However, time2 can be very large, so compute this carefully in the case where time2
|
| + // exceeds the size of a size_t.
|
| +
|
| + size_t fillToEndFrame = endFrame;
|
| + if (endFrame > time2 * sampleRate)
|
| + fillToEndFrame = static_cast<size_t>(ceil(time2 * sampleRate));
|
| +
|
| ASSERT(fillToEndFrame >= startFrame);
|
| size_t fillToFrame = fillToEndFrame - startFrame;
|
| fillToFrame = std::min(fillToFrame, static_cast<size_t>(numberOfValues));
|
|
|