| Index: src/pathops/SkPathOpsTightBounds.cpp | 
| diff --git a/src/pathops/SkPathOpsTightBounds.cpp b/src/pathops/SkPathOpsTightBounds.cpp | 
| index 01c16732c2f1c1dabcf234ccedeac4b08d61712f..f60c291710cb3e9fc4234de9f14c2a3a68d3902d 100644 | 
| --- a/src/pathops/SkPathOpsTightBounds.cpp | 
| +++ b/src/pathops/SkPathOpsTightBounds.cpp | 
| @@ -10,24 +10,20 @@ | 
| bool TightBounds(const SkPath& path, SkRect* result) { | 
| SkChunkAlloc allocator(4096);  // FIXME: constant-ize, tune | 
| SkOpContour contour; | 
| -    SkOpGlobalState globalState( NULL  SkDEBUGPARAMS(&contour)); | 
| +    SkOpContourHead* contourList = static_cast<SkOpContourHead*>(&contour); | 
| +    SkOpGlobalState globalState(NULL, contourList); | 
| // turn path into list of segments | 
| SkOpEdgeBuilder builder(path, &contour, &allocator, &globalState); | 
| if (!builder.finish(&allocator)) { | 
| return false; | 
| } | 
| -    SkTDArray<SkOpContour* > contourList; | 
| -    MakeContourList(&contour, contourList, false, false); | 
| -    SkOpContour** currentPtr = contourList.begin(); | 
| -    result->setEmpty(); | 
| -    if (!currentPtr) { | 
| +    if (!SortContourList(&contourList, false, false)) { | 
| +        result->setEmpty(); | 
| return true; | 
| } | 
| -    SkOpContour** listEnd = contourList.end(); | 
| -    SkOpContour* current = *currentPtr++; | 
| +    SkOpContour* current = contourList; | 
| SkPathOpsBounds bounds = current->bounds(); | 
| -    while (currentPtr != listEnd) { | 
| -        current = *currentPtr++; | 
| +    while ((current = current->next())) { | 
| bounds.add(current->bounds()); | 
| } | 
| *result = bounds; | 
|  |