fixed assertion failure in skslc SPIR-V output
Bug: oss-fuzz:13683
Change-Id: Ifceacb35417b1175b3d561c4f0f9794987a09ec3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/209162
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
diff --git a/src/sksl/SkSLDefines.h b/src/sksl/SkSLDefines.h
index da226f47..21aa7a6 100644
--- a/src/sksl/SkSLDefines.h
+++ b/src/sksl/SkSLDefines.h
@@ -18,9 +18,9 @@
#endif // SKSL_STANDALONE
#ifdef SKSL_STANDALONE
-#define SkASSERT(x)
-#define SkAssertResult(x) x
-#define SkDEBUGCODE(x)
+#define SkASSERT(x) if (!(x)) abort();
+#define SkAssertResult(x) if (!(x)) abort();
+#define SkDEBUGCODE(...) __VA_ARGS__
#else
#include "SkTypes.h"
#endif
diff --git a/src/sksl/SkSLSPIRVCodeGenerator.cpp b/src/sksl/SkSLSPIRVCodeGenerator.cpp
index c688594..c851db9 100644
--- a/src/sksl/SkSLSPIRVCodeGenerator.cpp
+++ b/src/sksl/SkSLSPIRVCodeGenerator.cpp
@@ -3201,7 +3201,10 @@
main = entry.first;
}
}
- SkASSERT(main);
+ if (!main) {
+ fErrors.error(0, "program does not contain a main() function");
+ return;
+ }
for (auto entry : fVariableMap) {
const Variable* var = entry.first;
if (var->fStorage == Variable::kGlobal_Storage &&