diff --git a/src/animator/SkScriptTokenizer.cpp b/src/animator/SkScriptTokenizer.cpp
index d75e68e..6be2abd 100644
--- a/src/animator/SkScriptTokenizer.cpp
+++ b/src/animator/SkScriptTokenizer.cpp
@@ -219,7 +219,7 @@
             // !!! ignoring unary plus as implemented here has the side effect of
             // suppressing errors like +"hi"
             if (lastPush == false)    // unary plus, don't push an operator
-                goto returnAdv;
+                return advance;
             op = kAdd;
             break;
         case '-':
@@ -278,7 +278,7 @@
             break;
         case '(':
             *fOpStack.push() = (Op) kParen;
-            goto returnAdv;
+            return advance;
         case '&':
             SkASSERT(nextChar != '&');
             op = kBitAnd;
@@ -319,8 +319,8 @@
     fOpStack.push(op);
     if (reverseOperands)
         *fOpStack.push() = (Op) (kFlipOps | kArtificialOp);
-returnAdv:
-        return advance;
+
+    return advance;
 }
 
 bool SkScriptEngine2::convertParams(SkTDArray<SkScriptValue2>* params, 
diff --git a/src/core/SkGraphics.cpp b/src/core/SkGraphics.cpp
index 649de1d..9859913 100644
--- a/src/core/SkGraphics.cpp
+++ b/src/core/SkGraphics.cpp
@@ -157,7 +157,7 @@
 }
 
 extern float dummy();
-int time_math() {
+static int time_math() {
     SkMSec now;
     int i;
     int sum = 0;
diff --git a/src/core/SkMemory_stdlib.cpp b/src/core/SkMemory_stdlib.cpp
index 6952ae8..9aea795 100644
--- a/src/core/SkMemory_stdlib.cpp
+++ b/src/core/SkMemory_stdlib.cpp
@@ -156,6 +156,7 @@
     }
 };
 
+void ValidateHeap();
 void ValidateHeap()
 {
     SkBlockHeader::Validate();
diff --git a/src/core/SkScan_Path.cpp b/src/core/SkScan_Path.cpp
index 636478d..e274579 100644
--- a/src/core/SkScan_Path.cpp
+++ b/src/core/SkScan_Path.cpp
@@ -628,8 +628,8 @@
 }
 
 
-void sk_fill_triangle(const SkPoint pts[], const SkIRect* clipRect,
-                      SkBlitter* blitter, const SkIRect& ir) {
+static void sk_fill_triangle(const SkPoint pts[], const SkIRect* clipRect,
+                             SkBlitter* blitter, const SkIRect& ir) {
     SkASSERT(pts && blitter);
     
     SkEdge edgeStorage[3];
diff --git a/src/utils/mac/SkOSWindow_Mac.cpp b/src/utils/mac/SkOSWindow_Mac.cpp
index 98adbbe..c2537b9 100644
--- a/src/utils/mac/SkOSWindow_Mac.cpp
+++ b/src/utils/mac/SkOSWindow_Mac.cpp
@@ -328,16 +328,17 @@
 
 			switch (wKind) {
                 case kEventMouseDown:
-                    (void)win->handleClick(pt.h, pt.v, Click::kDown_State);
-                    result = noErr;
+                    if (win->handleClick(pt.h, pt.v, Click::kDown_State)) {
+                     //   result = noErr;
+                    }
                     break;
                 case kEventMouseDragged:
                     (void)win->handleClick(pt.h, pt.v, Click::kMoved_State);
-                    result = noErr;
+                  //  result = noErr;
                     break;
                 case kEventMouseUp:
                     (void)win->handleClick(pt.h, pt.v, Click::kUp_State);
-                    result = noErr;
+                  //  result = noErr;
                     break;
                 default:
                     break;
