summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gfx/layers/composite/FPSCounter.cpp27
1 files changed, 21 insertions, 6 deletions
diff --git a/gfx/layers/composite/FPSCounter.cpp b/gfx/layers/composite/FPSCounter.cpp
index 02ffc4b2c1..b8e93eb97b 100644
--- a/gfx/layers/composite/FPSCounter.cpp
+++ b/gfx/layers/composite/FPSCounter.cpp
@@ -210,7 +210,10 @@ FPSCounter::WriteFrameTimeStamps(PRFileDesc* fd)
const int bufferSize = 256;
char buffer[bufferSize];
int writtenCount = SprintfLiteral(buffer, "FPS Data for: %s\n", mFPSName);
- MOZ_ASSERT(writtenCount >= 0);
+ MOZ_ASSERT(writtenCount < bufferSize);
+ if (writtenCount >= bufferSize) {
+ return;
+ }
PR_Write(fd, buffer, writtenCount);
ResetReverseIterator();
@@ -225,8 +228,10 @@ FPSCounter::WriteFrameTimeStamps(PRFileDesc* fd)
while (HasNext(startTimeStamp)) {
TimeDuration duration = previousSample - nextTimeStamp;
writtenCount = SprintfLiteral(buffer, "%f,\n", duration.ToMilliseconds());
-
- MOZ_ASSERT(writtenCount >= 0);
+ MOZ_ASSERT(writtenCount < bufferSize);
+ if (writtenCount >= bufferSize) {
+ continue;
+ }
PR_Write(fd, buffer, writtenCount);
previousSample = nextTimeStamp;
@@ -299,8 +304,13 @@ FPSCounter::PrintFPS()
void
FPSCounter::PrintHistogram(std::map<int, int>& aHistogram)
{
+ if (aHistogram.size() == 0) {
+ return;
+ }
+
int length = 0;
const int kBufferLength = 512;
+ int availableSpace = kBufferLength;
char buffer[kBufferLength];
for (std::map<int, int>::iterator iter = aHistogram.begin();
@@ -309,9 +319,14 @@ FPSCounter::PrintHistogram(std::map<int, int>& aHistogram)
int fps = iter->first;
int count = iter->second;
- length += snprintf(buffer + length, kBufferLength - length,
- "FPS: %d = %d. ", fps, count);
- NS_ASSERTION(length >= kBufferLength, "Buffer overrun while printing FPS histogram.");
+ int lengthRequired = snprintf(buffer + length, availableSpace,
+ "FPS: %d = %d. ", fps, count);
+ // Ran out of buffer space. Oh well - just print what we have.
+ if (lengthRequired > availableSpace) {
+ break;
+ }
+ length += lengthRequired;
+ availableSpace -= lengthRequired;
}
printf_stderr("%s\n", buffer);