@@ -747,32 +747,46 @@ static int harden_rt()
747747static RtapiApp *makeDllApp (string dllName, int policy){
748748 void *dll = nullptr ;
749749 dll = dlopen (dllName.c_str (), RTLD_NOW);
750- if (!dll) fprintf (stderr, " dlopen: %s\n " , dlerror ());
750+ if (!dll){
751+ fprintf (stderr, " dlopen: %s\n " , dlerror ());
752+ return nullptr ;
753+ }
751754 auto fn = reinterpret_cast <RtapiApp*(*)(int policy)>(dlsym (dll, " make" ));
752- if (!fn) fprintf (stderr, " dlopen: %s\n " , dlerror ());
753- auto result = fn ? fn (policy) : nullptr ;
754- if (result) {
755- return result;
756- }else {
757- throw invalid_argument (" Could not load DLL!" );
755+ if (!fn){
756+ fprintf (stderr, " dlsym: %s\n " , dlerror ());
757+ return nullptr ;
758758 }
759+ auto result = fn (policy);
760+ if (!result) {
761+ fprintf (stderr, " dlsym: %s\n " , dlerror ());
762+ return nullptr ;
763+ }
764+ return result;
759765}
760766
761767static RtapiApp *makeApp ()
762768{
769+ RtapiApp* app;
763770 if (euid != 0 || harden_rt () < 0 )
764771 {
765- return makeDllApp (EMC2_HOME " /lib/libuspace-posix.so.0" , SCHED_OTHER);
766- }
767- WithRoot r;
768- if (detect_xenomai_evl ()) {
769- return makeDllApp (EMC2_HOME " /lib/libuspace-xenomai-evl.so.0" , SCHED_FIFO);
770- }else if (detect_xenomai ()) {
771- return makeDllApp (EMC2_HOME " /lib/libuspace-xenomai.so.0" , SCHED_FIFO);
772- } else if (detect_rtai ()) {
773- return makeDllApp (EMC2_HOME " /lib/libuspace-rtai.so.0" , SCHED_FIFO);
774- } else {
775- return makeDllApp (EMC2_HOME " /lib/libuspace-posix.so.0" , SCHED_FIFO);
772+ app=makeDllApp (EMC2_HOME " /lib/libuspace-posix.so.0" , SCHED_OTHER);
773+ }else {
774+ WithRoot r;
775+ if (detect_xenomai_evl ()) {
776+ app=makeDllApp (EMC2_HOME " /lib/libuspace-xenomai-evl.so.0" , SCHED_FIFO);
777+ }else if (detect_xenomai ()) {
778+ app=makeDllApp (EMC2_HOME " /lib/libuspace-xenomai.so.0" , SCHED_FIFO);
779+ } else if (detect_rtai ()) {
780+ app=makeDllApp (EMC2_HOME " /lib/libuspace-rtai.so.0" , SCHED_FIFO);
781+ } else {
782+ app=makeDllApp (EMC2_HOME " /lib/libuspace-posix.so.0" , SCHED_FIFO);
783+ }
784+ }
785+
786+ if (!app){
787+ throw invalid_argument (" Could not load rtapi dll" );
788+ }else {
789+ return app;
776790 }
777791}
778792RtapiApp &App ()
0 commit comments