Graphics: fix handle.tag / gca() / clf() crash
[scilab.git] / scilab / modules / graphics / src / cpp / get_tag_property.cpp
@@ -1,6 +1,7 @@
 /*
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ * Copyright (C) 2017 - Scilab Enterprises - ClĂ©ment DAVID
  *
  * Copyright (C) 2012 - 2016 - Scilab Enterprises
  *
  */
 
 /*------------------------------------------------------------------------*/
-/* file: get_tag_property.c                                               */
+/* file: get_tag_property.cpp                                               */
 /* desc : function to retrieve in Scilab the tag field of                 */
 /*        a handle                                                        */
 /*------------------------------------------------------------------------*/
 
+extern "C"
+{
 #include "sci_types.h"
 #include "getHandleProperty.h"
 #include "returnProperty.h"
@@ -27,6 +30,7 @@
 
 #include "getGraphicObjectProperty.h"
 #include "graphicObjectProperties.h"
+}
 
 /*------------------------------------------------------------------------*/
 void* get_tag_property(void* _pvCtx, int iObjUID)
@@ -34,17 +38,18 @@ void* get_tag_property(void* _pvCtx, int iObjUID)
     char* tag = NULL;
     void* status = NULL;
 
+       // the tag pointer is allocated using new[]
     getGraphicObjectProperty(iObjUID,  __GO_TAG__, jni_string, (void**) &tag);
 
     if (tag == NULL)
     {
         Scierror(999, _("'%s' property does not exist for this handle.\n"), "Tag");
-        return FALSE;
+        return nullptr;
     }
     else
     {
         status = sciReturnString(tag);
-        free(tag);
+        delete[] tag;
         return status;
     }
 }