diff --git a/src/servers/registrar/mime/RegistrarThread.cpp b/src/servers/registrar/mime/RegistrarThread.cpp index 4a0ada91cb..b50faec77e 100644 --- a/src/servers/registrar/mime/RegistrarThread.cpp +++ b/src/servers/registrar/mime/RegistrarThread.cpp @@ -35,17 +35,12 @@ RegistrarThread::RegistrarThread(const char *name, int32 priority, BMessenger ma , fIsFinished(false) , fStatus(B_NO_INIT) , fId(-1) + , fPriority(priority) { fName[0] = 0; status_t err = name && fManagerMessenger.IsValid() ? B_OK : B_BAD_VALUE; - if (!err) { - fId = spawn_thread(&RegistrarThread::EntryFunction, name, - priority, (void*)this); - err = fId >= 0 ? B_OK : fId; - } - if (!err) { + if (err == B_OK) strcpy(fName, name); - } fStatus = err; } @@ -72,8 +67,13 @@ status_t RegistrarThread::Run() { status_t err = InitCheck(); - if (!err) - err = resume_thread(fId); + if (err == B_OK) { + fId = spawn_thread(&RegistrarThread::EntryFunction, fName, + fPriority, (void*)this); + err = fId >= 0 ? B_OK : fId; + if (err == B_OK) + err = resume_thread(fId); + } return err; } diff --git a/src/servers/registrar/mime/RegistrarThread.h b/src/servers/registrar/mime/RegistrarThread.h index 479399551e..48d9edc37b 100644 --- a/src/servers/registrar/mime/RegistrarThread.h +++ b/src/servers/registrar/mime/RegistrarThread.h @@ -40,6 +40,7 @@ private: status_t fStatus; thread_id fId; char fName[B_OS_NAME_LENGTH]; + int32 fPriority; }; #endif // REGISTRAR_THREAD_H