Replacing alloca call in SkTileGrid with SkAutoSMalloc
Review URL: https://codereview.appspot.com/6946054
git-svn-id: http://skia.googlecode.com/svn/trunk@6824 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkTileGrid.cpp b/src/core/SkTileGrid.cpp
index 6b08975..1a5e627 100644
--- a/src/core/SkTileGrid.cpp
+++ b/src/core/SkTileGrid.cpp
@@ -8,10 +8,6 @@
#include "SkTileGrid.h"
-#if defined(SK_BUILD_FOR_WIN)
-#include <malloc.h> // for alloca
-#endif
-
SkTileGrid::SkTileGrid(int tileWidth, int tileHeight, int xTileCount, int yTileCount, SkTileGridNextDatumFunctionPtr nextDatumFunction)
{
fTileWidth = tileWidth;
@@ -77,8 +73,10 @@
results->reset();
SkTDArray<int> curPositions;
curPositions.setCount(queryTileCount);
- SkTDArray<void *>** tileRange =
- (SkTDArray<void *>**)alloca(queryTileCount * sizeof(SkTDArray<void *>*));
+ // Note: Reserving space for 1024 tile pointers on the stack. If the malloc
+ // becomes a bottleneck, we may consider increasing that number.
+ SkAutoSTArray<1024, SkTDArray<void *>*> storage(queryTileCount);
+ SkTDArray<void *>** tileRange = storage.get();
int tile = 0;
for (int x = tileStartX; x < tileEndX; ++x) {
for (int y = tileStartY; y < tileEndY; ++y) {