fix sci_clearfun after 8b58e9ef commit
[scilab.git] / scilab / modules / core / sci_gateway / cpp / sci_clearfun.cpp
index 701325b..e5fc31f 100644 (file)
@@ -24,28 +24,26 @@ extern "C"
 #include "charEncoding.h"
 }
 
-using namespace types;
-
-Function::ReturnValue sci_clearfun(types::typed_list &in, int _iRetCount, types::typed_list &out)
+types::Function::ReturnValue sci_clearfun(types::typed_list &in, int _iRetCount, types::typed_list &out)
 {
     if (in.size() != 1)
     {
         Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), "clearfun" , 1);
-        return Function::Error;
+        return types::Function::Error;
     }
 
-    InternalType* pIT1 = in[0];
+    types::InternalType* pIT1 = in[0];
     if (pIT1->isString() == false)
     {
         Scierror(999, _("%s: Wrong type for input argument #%d: String expected.\n"), "clearfun", 1);
-        return Function::Error;
+        return types::Function::Error;
     }
 
-    String* pS1 = pIT1->getAs<String>();
+    types::String* pS1 = pIT1->getAs<types::String>();
     if (pS1->isScalar() == false)
     {
         Scierror(999, _("%s: Wrong size for input argument #%d: A string expected.\n"), "clearfun", 1);
-        return Function::Error;
+        return types::Function::Error;
     }
 
     wchar_t* pwcsName = pS1->get(0);
@@ -73,6 +71,7 @@ Function::ReturnValue sci_clearfun(types::typed_list &in, int _iRetCount, types:
             pSV->m_pIT->killMe();
             stack.pop();
             bDeleted = true;
+            delete pSV;
         }
 
         //move all elements at orginal place and order
@@ -80,12 +79,11 @@ Function::ReturnValue sci_clearfun(types::typed_list &in, int _iRetCount, types:
         {
             pSV = stack.top();
             stack.pop();
-            pSV->m_pIT->DecreaseRef();
-            pVar->put(pSV->m_pIT, pSV->m_iLevel);
-            delete pSV;
+            //pSV->m_pIT->DecreaseRef();
+            pVar->put(pSV);
         }
     }
 
-    out.push_back(new Bool(bDeleted ? 1 : 0));
-    return Function::OK;
+    out.push_back(new types::Bool(bDeleted ? 1 : 0));
+    return types::Function::OK;
 }