Chromium Code Reviews| Index: Source/core/html/track/vtt/VTTScanner.cpp |
| diff --git a/Source/core/html/track/vtt/VTTScanner.cpp b/Source/core/html/track/vtt/VTTScanner.cpp |
| index fd6a662d8f43930ae4781b5d0b6698ec7e2574e3..590178f886450149786f234b05195c4932c82f4d 100644 |
| --- a/Source/core/html/track/vtt/VTTScanner.cpp |
| +++ b/Source/core/html/track/vtt/VTTScanner.cpp |
| @@ -139,4 +139,33 @@ unsigned VTTScanner::scanDigits(int& number) |
| return numDigits; |
| } |
| +bool VTTScanner::scanFloat(float& number) |
| +{ |
| + Run integerRun = collectWhile<isASCIIDigit>(); |
| + seekTo(integerRun.end()); |
| + Run decimalRun(position(), position(), m_is8Bit); |
| + if (scan('.')) { |
| + decimalRun = collectWhile<isASCIIDigit>(); |
| + seekTo(decimalRun.end()); |
| + } |
| + |
| + // At least one digit required. |
| + if (integerRun.isEmpty() && decimalRun.isEmpty()) { |
| + // Restore to starting position. |
| + seekTo(integerRun.start()); |
| + return false; |
|
Mike West
2014/01/21 07:59:24
Here you return false without setting `number`. At
fs
2014/01/21 08:19:57
Intentional, yes. At this point, we have not manag
|
| + } |
| + |
| + size_t lengthOfFloat = Run(integerRun.start(), position(), m_is8Bit).length(); |
| + bool validNumber; |
| + if (m_is8Bit) |
| + number = charactersToFloat(integerRun.start(), lengthOfFloat, &validNumber); |
| + else |
| + number = charactersToFloat(reinterpret_cast<const UChar*>(integerRun.start()), lengthOfFloat, &validNumber); |
| + |
| + if (!validNumber) |
| + number = std::numeric_limits<float>::max(); |
| + return true; |
| +} |
| + |
| } |