prompt function corrected. 99/8999/2
Cedric Delamarre [Thu, 13 Sep 2012 14:57:37 +0000 (16:57 +0200)]
Change-Id: Ia2bfcd6790e33aaabb366c236aa580bd6e10dab8

scilab/modules/console/sci_gateway/cpp/sci_prompt.cpp

index c7df7bc..4804d28 100644 (file)
@@ -27,39 +27,45 @@ extern "C"
 
 types::Function::ReturnValue sci_prompt(types::typed_list &in, int _iRetCount, types::typed_list &out)
 {
-       char currentPrompt[PROMPT_SIZE_MAX];
+    char currentPrompt[PROMPT_SIZE_MAX];
 
-    if(_iRetCount != 0)
-    {
-        ScierrorW(78, _W("%ls: Wrong number of output argument(s): %d expected.\n"), L"prompt", 0);
-        return types::Function::Error;
-    }
-
-    if(in.size() > 1)
+    if (in.size() > 1)
     {
         ScierrorW(77, _W("%ls: Wrong number of input argument(s): %d to %d expected.\n"), L"prompt", 0, 1);
         return types::Function::Error;
     }
 
-    if(in.size() == 0)/* Get current Scilab prompt */
+    if (in.size() == 0) /* Get current Scilab prompt */
     {
-               GetCurrentPrompt(currentPrompt);
+        if (_iRetCount > 2)
+        {
+            ScierrorW(78, _W("%ls: Wrong number of output argument(s): %d to %d expected.\n"), L"prompt", 1, 2);
+            return types::Function::Error;
+        }
+
+        GetCurrentPrompt(currentPrompt);
         out.push_back(new types::String(currentPrompt));
-        if(_iRetCount == 2)
+        if (_iRetCount == 2)
         {
-            types::Double* pDbl = new types::Double(1,1);
+            types::Double* pDbl = new types::Double(1, 1);
             pDbl->set(0, ConfigVariable::getPauseLevel());
             out.push_back(pDbl);
         }
     }
     else //if(in.size() == 1)
     {
-        if((in[0]->isString() == false) || !in[0]->getAs<types::String>()->isScalar())
+        if (_iRetCount > 1)
+        {
+            ScierrorW(78, _W("%ls: Wrong number of output argument(s): %d expected.\n"), L"prompt", 1);
+            return types::Function::Error;
+        }
+
+        if ((in[0]->isString() == false) || !in[0]->getAs<types::String>()->isScalar())
         {
             ScierrorW(999, _W("%ls: Wrong type for input argument #%d: A string expected.\n"), L"prompt", 1);
             return types::Function::Error;
         }
-               SetTemporaryPrompt(wide_string_to_UTF8(in[0]->getAs<types::String>()->get(0)));
+        SetTemporaryPrompt(wide_string_to_UTF8(in[0]->getAs<types::String>()->get(0)));
     }
 
     return types::Function::OK;