diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp
index 6774decd55caa48a54336a8fefcada6f36727ee8..8f05887e345b87588af36e837ed43cc02d3b0676 100644
--- a/Common/CommandLine.cpp
+++ b/Common/CommandLine.cpp
@@ -149,7 +149,7 @@ void GetOptions(int argc, char *argv[])
       }
       else if(!strcmp(argv[i] + 1, "onelab")) {
         i++;
-        if(argv[i] && argv[i + 1]){
+        if(argv[i] && argv[i + 1] && argv[i + 1][0] != '-'){
           Msg::InitializeOnelab(argv[i], argv[i + 1]);
           i += 2;
         }
diff --git a/Common/GmshMessage.cpp b/Common/GmshMessage.cpp
index c3485057d9bfab6d911632e5b57a73fe8c0759ef..152f0a2fdad7699e43a6e259e4d773f35354005e 100644
--- a/Common/GmshMessage.cpp
+++ b/Common/GmshMessage.cpp
@@ -637,7 +637,8 @@ void Msg::InitializeOnelab(const std::string &name, const std::string &sockname)
   if(_onelabClient) delete _onelabClient;
   if(sockname.empty()){
     _onelabClient = new onelab::localClient("Gmsh");
-    _onelabClient->fromFile(name);
+    if(!_onelabClient->fromFile(name))
+      Error("Error loading onelab database '%s'", name.c_str());
   }
   else{
     onelab::remoteNetworkClient *c = new onelab::remoteNetworkClient(name, sockname);