changeset 4:5c4b5066fab0

Do not try to execute the executable if compilation failed
author Brendan Rius <brendan@omixy.com>
date Fri, 25 Mar 2016 14:25:29 +0000
parents 8ddfdd2a8574
children c4f5d97f80d0
files c_kernel/kernel.py
diffstat 1 files changed, 15 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/c_kernel/kernel.py	Fri Mar 25 14:13:22 2016 +0000
+++ b/c_kernel/kernel.py	Fri Mar 25 14:25:29 2016 +0000
@@ -54,19 +54,22 @@
             with self.new_temp_file(suffix='.out') as binary_file:
                 retcode, stdout, stderr = self.compile_with_gcc(source_file.name, binary_file.name)
                 if retcode != 0:
-                    stderr += "[C kernel] GCC exited with code {}".format(retcode)
-                self.log.error("GCC return code: {}".format(retcode))
-                self.log.error("GCC stdout: {}".format(stdout))
-                self.log.error("GCC stderr: {}".format(stderr))
+                    stderr += "[C kernel] GCC exited with code {}, the executable will not be executed".format(retcode)
+                self.log.info("GCC return code: {}".format(retcode))
+                self.log.info("GCC stdout: {}".format(stdout))
+                self.log.info("GCC stderr: {}".format(stderr))
 
-        retcode, out, err = CKernel.execute_command([binary_file.name])
-        if retcode != 0:
-            stderr += "[C kernel] Executable exited with code {}".format(retcode)
-        self.log.error("Executable retcode: {}".format(retcode))
-        self.log.error("Executable stdout: {}".format(out))
-        self.log.error("Executable stderr: {}".format(err))
-        stdout += out
-        stderr += err
+        if retcode == 0:  # If the compilation succeeded
+            retcode, out, err = CKernel.execute_command([binary_file.name])
+            if retcode != 0:
+                stderr += "[C kernel] Executable exited with code {}".format(retcode)
+            self.log.info("Executable retcode: {}".format(retcode))
+            self.log.info("Executable stdout: {}".format(out))
+            self.log.info("Executable stderr: {}".format(err))
+            stdout += out
+            stderr += err
+        else:
+            self.log.info('Compilation failed, the program will not be executed')
 
         if not silent:
             stream_content = {'name': 'stderr', 'text': stderr}