# 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/)
--- /dev/null
+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