diff --git a/src/servers/app/AppServer.cpp b/src/servers/app/AppServer.cpp index 271d82aefc..484077f80c 100644 --- a/src/servers/app/AppServer.cpp +++ b/src/servers/app/AppServer.cpp @@ -189,10 +189,16 @@ AppServer::_CreateDesktop(uid_t userID) try { desktop = new Desktop(userID); - desktop->Init(); - desktop->Run(); + status_t status = desktop->Init(); + if (status == B_OK) { + if (!desktop->Run()) + status = B_ERROR; + } + if (status == B_OK && !fDesktops.AddItem(desktop)) + status = B_NO_MEMORY; - if (!fDesktops.AddItem(desktop)) { + if (status < B_OK) { + fprintf(stderr, "Cannot initialize Desktop object: %s\n", strerror(status)); delete desktop; return NULL; }