Patch Squirrel before starting coverity analysis
authorTobias Markus <tobbi@mozilla-uk.org>
Tue, 3 Mar 2015 16:06:37 +0000 (17:06 +0100)
committerTobias Markus <tobbi@mozilla-uk.org>
Tue, 3 Mar 2015 16:11:43 +0000 (17:11 +0100)
external/squirrel/CMakeLists.txt
squirrel_coverity.patch [new file with mode: 0644]

index 0c4ef29..8a95f7f 100644 (file)
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 #
 
+## Apply patch that fixes some Coverity errors
+
+## Apply coverity patch to Squirrel?
+SET(APPLY_COVERITY_PATCH TRUE)
+
+FIND_PROGRAM(PATCH_EXECUTABLE patch)
+IF(PATCH_EXECUTABLE AND APPLY_COVERITY_PATCH)
+  EXECUTE_PROCESS(COMMAND patch -p1 --forward -i squirrel_coverity.patch)
+ENDIF(PATCH_EXECUTABLE AND APPLY_COVERITY_PATCH)
+
 ## Add include/ to include directories
 
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include/)
diff --git a/squirrel_coverity.patch b/squirrel_coverity.patch
new file mode 100644 (file)
index 0000000..82681aa
--- /dev/null
@@ -0,0 +1,72 @@
+diff --git a/external/squirrel/sqstdlib/sqstdstring.cpp b/external/squirrel/sqstdlib/sqstdstring.cpp
+index 33316fa..a213135 100644
+--- a/external/squirrel/sqstdlib/sqstdstring.cpp
++++ b/external/squirrel/sqstdlib/sqstdstring.cpp
+@@ -116,6 +116,7 @@ SQRESULT sqstd_format(HSQUIRRELVM v,SQInteger nformatstringidx,SQInteger *outlen
+                               fmt[fpos++] = _SC('\0');\r
+                               }\r
+ #endif\r
++                break;\r
+                       case 'c':\r
+                               if(SQ_FAILED(sq_getinteger(v,nparam,&ti))) \r
+                                       return sq_throwerror(v,_SC("integer expected for the specified format"));\r
+diff --git a/external/squirrel/squirrel/sqfuncstate.cpp b/external/squirrel/squirrel/sqfuncstate.cpp
+index aff80e5..1667815 100644
+--- a/external/squirrel/squirrel/sqfuncstate.cpp
++++ b/external/squirrel/squirrel/sqfuncstate.cpp
+@@ -460,6 +460,7 @@ void SQFuncState::AddInstruction(SQInstruction &i)
+                               pi._arg1 = i._arg1;\r
+                               return;\r
+                       }\r
++            break;\r
+               case _OP_SET:\r
+               case _OP_NEWSLOT:\r
+                       if(i._arg0 == i._arg3) {\r
+diff --git a/external/squirrel/squirrel/sqlexer.cpp b/external/squirrel/squirrel/sqlexer.cpp
+index 547835b..9df5f1f 100644
+--- a/external/squirrel/squirrel/sqlexer.cpp
++++ b/external/squirrel/squirrel/sqlexer.cpp
+@@ -192,6 +192,7 @@ SQInteger SQLexer::Lex()
+                       NEXT();\r
+                       if (CUR_CHAR != _SC('=')){ RETURN_TOKEN('!')}\r
+                       else { NEXT(); RETURN_TOKEN(TK_NE); }\r
++            break;\r
+               case _SC('@'): {\r
+                       SQInteger stype;\r
+                       NEXT();\r
+@@ -211,6 +212,7 @@ SQInteger SQLexer::Lex()
+                       }\r
+                       Error(_SC("error parsing the string"));\r
+                       }\r
++            break;\r
+               case _SC('{'): case _SC('}'): case _SC('('): case _SC(')'): case _SC('['): case _SC(']'):\r
+               case _SC(';'): case _SC(','): case _SC('?'): case _SC('^'): case _SC('~'):\r
+                       {SQInteger ret = CUR_CHAR;\r
+diff --git a/external/squirrel/squirrel/sqvm.cpp b/external/squirrel/squirrel/sqvm.cpp
+index de0927f..e941231 100644
+--- a/external/squirrel/squirrel/sqvm.cpp
++++ b/external/squirrel/squirrel/sqvm.cpp
+@@ -306,6 +306,7 @@ bool SQVM::ToString(const SQObjectPtr &o,SQObjectPtr &res)
+                               }\r
+                       }\r
+               }\r
++        break;\r
+       default:\r
+               scsprintf(_sp(rsl(sizeof(void*)+20)),_SC("(%s : 0x%p)"),GetTypeName(o),(void*)_rawval(o));\r
+       }\r
+@@ -561,6 +562,7 @@ bool SQVM::FOREACH_OP(SQObjectPtr &o1,SQObjectPtr &o2,SQObjectPtr
+                       _generator(o1)->Resume(this, o3);\r
+                       _FINISH(0);\r
+               }\r
++        break;\r
+       default: \r
+               Raise_Error(_SC("cannot iterate %s"), GetTypeName(o1));\r
+       }\r
+@@ -724,6 +726,7 @@ exception_restore:
+                                       continue;\r
+                               }\r
+                                                         }\r
++                break;\r
+                       case _OP_CALL: {\r
+                                       SQObjectPtr clo = STK(arg1);\r
+                                       switch (type(clo)) {\r