Minor cleanup: use C++-style cast and add some comments
authorDavin McCall <davmac@davmac.org>
Fri, 13 Nov 2015 18:12:37 +0000 (18:12 +0000)
committerDavin McCall <davmac@davmac.org>
Fri, 13 Nov 2015 18:12:37 +0000 (18:12 +0000)
service.cc

index 5fedffecd0ed183e5d0dcd43c4785c97539117d5..c4c16d2f4bb36934bdd99e78b279e344fd15bba1 100644 (file)
@@ -265,13 +265,18 @@ bool ServiceRecord::start_ps_process()
 }
 
 
+// TODO this can currently throw std::bad_alloc, fix that (in the worst case,
+//      return failure instead).
 bool ServiceRecord::start_ps_process(const std::vector<std::string> &pargs)
 {
     // In general, you can't tell whether fork/exec is successful. We use a pipe to communicate
     // success/failure from the child to the parent. The pipe is set CLOEXEC so a successful
     // exec closes the pipe, and the parent sees EOF. If the exec is unsuccessful, the errno
     // is written to the pipe, and the parent can read it.
-    
+
+    // TODO should NOT wait for the exec to succeed or fail here, as that could (when/if we allow
+    // running child processes with lower priority) result in priority inversion.
+
     using std::vector;
     using std::string;
     
@@ -323,7 +328,7 @@ bool ServiceRecord::start_ps_process(const std::vector<std::string> &pargs)
         }
         args[progAndArgs.size()] = nullptr;
         
-        execvp(pname, (char ** const) args);
+        execvp(pname, const_cast<char **>(args));
         
         // If we got here, the exec failed:        
         int exec_status = errno;