Compilation fails for null input file name string

When compilation fails, the compilation result length is 0.
diff --git a/libshaderc/src/shaderc.cc b/libshaderc/src/shaderc.cc
index 4d83b45..303e769 100644
--- a/libshaderc/src/shaderc.cc
+++ b/libshaderc/src/shaderc.cc
@@ -349,6 +349,12 @@
   if (!result) {
     return nullptr;
   }
+  if (!input_file_name) {
+    result->messages = "Input file name string was null.";
+    result->num_errors = 1;
+    result->compilation_status = shaderc_compilation_status_compilation_error;
+    return result;
+  }
   result->compilation_status = shaderc_compilation_status_invalid_stage;
   bool compilation_succeeded = false;  // In case we exit early.
   std::vector<uint32_t> compilation_output_data;
diff --git a/libshaderc/src/shaderc_private.h b/libshaderc/src/shaderc_private.h
index f15141d..491f8a4 100644
--- a/libshaderc/src/shaderc_private.h
+++ b/libshaderc/src/shaderc_private.h
@@ -30,7 +30,7 @@
   // uint32_t element.
   std::vector<uint32_t> output_data;
   // The size of the output data in term of bytes.
-  size_t output_data_size;
+  size_t output_data_size = 0;
   // Compilation messages.
   std::string messages;
   // Number of errors.
diff --git a/libshaderc/src/shaderc_test.cc b/libshaderc/src/shaderc_test.cc
index 50afe8e..ba1f1b0 100644
--- a/libshaderc/src/shaderc_test.cc
+++ b/libshaderc/src/shaderc_test.cc
@@ -194,11 +194,13 @@
   const std::string CompilationErrors(
       const std::string& shader, shaderc_shader_kind kind,
       const shaderc_compile_options_t options = nullptr,
-      OutputType output_type = OutputType::SpirvBinary) {
+      OutputType output_type = OutputType::SpirvBinary,
+      const char* source_name = "shader") {
     const Compilation comp(compiler_.get_compiler_handle(), shader, kind,
-                           "shader", options, output_type);
+                           source_name, options, output_type);
     EXPECT_FALSE(CompilationResultIsSuccess(comp.result())) << kind << '\n'
                                                             << shader;
+    EXPECT_EQ(0u, shaderc_result_get_length(comp.result()));
     return shaderc_result_get_error_message(comp.result());
   };
 
@@ -1116,4 +1118,23 @@
         ParseVersionProfileTestCase("", false),
     }));
 
+TEST_F(CompileStringTest, NullSourceNameFailsCompilingToBinary) {
+  EXPECT_THAT(CompilationErrors(kEmpty310ESShader, shaderc_glsl_vertex_shader,
+                                nullptr, OutputType::SpirvBinary, nullptr),
+              HasSubstr("Input file name string was null."));
+}
+
+TEST_F(CompileStringTest, NullSourceNameFailsCompilingToAssemblyText) {
+  EXPECT_THAT(
+      CompilationErrors(kEmpty310ESShader, shaderc_glsl_vertex_shader, nullptr,
+                        OutputType::SpirvAssemblyText, nullptr),
+      HasSubstr("Input file name string was null."));
+}
+
+TEST_F(CompileStringTest, NullSourceNameFailsCompilingToPreprocessedText) {
+  EXPECT_THAT(CompilationErrors(kEmpty310ESShader, shaderc_glsl_vertex_shader,
+                                nullptr, OutputType::PreprocessedText, nullptr),
+              HasSubstr("Input file name string was null."));
+}
+
 }  // anonymous namespace