Changed maxInputCount for exact inputCount

Processing still had issue when the number of inputs was 0, so I changed my previous fix from a maximum input count to an exact input count. -1 is used when the input count isn't fixed (but still has to be a non-negative number).

BUG=
R=senorblanco@chromium.org, reed@google.com, sugoi@google.com, bsalomon@google.com

Author: sugoi@chromium.org

Review URL: https://codereview.chromium.org/100803004

git-svn-id: http://skia.googlecode.com/svn/trunk/src@12492 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/animator/SkScript.cpp b/animator/SkScript.cpp
index c74b195..934b0ab 100644
--- a/animator/SkScript.cpp
+++ b/animator/SkScript.cpp
@@ -1532,11 +1532,11 @@
             SkString* strPtr = new SkString();
             SkASSERT(engine);
             engine->track(strPtr);
-            if (type == SkType_Int)
+            if (type == SkType_Int) {
                 strPtr->appendS32(operand.fS32);
-            else if (type == SkType_Displayable)
+            } else if (type == SkType_Displayable) {
                 SkASSERT(0); // must call through instance version instead of static version
-            else {
+            } else {
                 if (type != SkType_Float) {
                     success = false;
                     break;
diff --git a/core/SkImageFilter.cpp b/core/SkImageFilter.cpp
index cca22bb..aadf904 100644
--- a/core/SkImageFilter.cpp
+++ b/core/SkImageFilter.cpp
@@ -53,9 +53,9 @@
     delete[] fInputs;
 }
 
-SkImageFilter::SkImageFilter(int maxInputCount, SkFlattenableReadBuffer& buffer) {
+SkImageFilter::SkImageFilter(int inputCount, SkFlattenableReadBuffer& buffer) {
     fInputCount = buffer.readInt();
-    if (buffer.validate((fInputCount >= 0) && (fInputCount <= maxInputCount))) {
+    if (buffer.validate((fInputCount >= 0) && ((inputCount < 0) || (fInputCount == inputCount)))) {
         fInputs = new SkImageFilter*[fInputCount];
         for (int i = 0; i < fInputCount; i++) {
             if (buffer.readBool()) {
diff --git a/effects/SkMergeImageFilter.cpp b/effects/SkMergeImageFilter.cpp
index a755fe6..b90c830 100755
--- a/effects/SkMergeImageFilter.cpp
+++ b/effects/SkMergeImageFilter.cpp
@@ -11,9 +11,6 @@
 #include "SkFlattenableBuffers.h"
 #include "SkValidationUtils.h"
 
-// Use 65535 as an arbitrary large number of inputs that this image filter should never overflow
-static const int kMaxInputs = 65535;
-
 ///////////////////////////////////////////////////////////////////////////////
 
 void SkMergeImageFilter::initAllocModes() {
@@ -56,7 +53,7 @@
 SkMergeImageFilter::SkMergeImageFilter(SkImageFilter* filters[], int count,
                                        const SkXfermode::Mode modes[],
                                        const CropRect* cropRect) : INHERITED(count, filters, cropRect) {
-    SkASSERT(count <= kMaxInputs);
+    SkASSERT(count >= 0);
     this->initModes(modes);
 }
 
@@ -161,7 +158,7 @@
 }
 
 SkMergeImageFilter::SkMergeImageFilter(SkFlattenableReadBuffer& buffer)
-  : INHERITED(kMaxInputs, buffer) {
+  : INHERITED(-1, buffer) {
     bool hasModes = buffer.readBool();
     if (hasModes) {
         this->initAllocModes();