From da203da2a7b36fa09e3221f0711412f05213a792 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@uliege.be>
Date: Wed, 25 Mar 2020 17:53:22 +0100
Subject: [PATCH] don't use strdup in gmsh.h_cwrap: it's deprecated by MSVC
 (#769)

---
 api/GenApi.py    | 3 ++-
 api/gmsh.h_cwrap | 3 ++-
 api/gmshc.cpp    | 3 ++-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/api/GenApi.py b/api/GenApi.py
index e2c2c1ac4d..41dcd1b07c 100644
--- a/api/GenApi.py
+++ b/api/GenApi.py
@@ -908,7 +908,8 @@ template<typename t>
 {{
   *p = (char**){0}Malloc(sizeof(char*) * v.size());
   for(size_t i = 0; i < v.size(); ++i){{
-    (*p)[i] = strdup(v[i].c_str());
+    (*p)[i] = (char*){0}Malloc(sizeof(char) * (v[i].size() + 1));
+    strcpy((*p)[i], v[i].c_str());
   }}
   *size = v.size();
 }}
diff --git a/api/gmsh.h_cwrap b/api/gmsh.h_cwrap
index 9186a90a14..9bbfb2b6f8 100644
--- a/api/gmsh.h_cwrap
+++ b/api/gmsh.h_cwrap
@@ -72,7 +72,8 @@ namespace gmsh {
   {
     *p = (char**)gmshMalloc(sizeof(char*) * v.size());
     for(size_t i = 0; i < v.size(); ++i){
-      (*p)[i] = strdup(v[i].c_str());
+      (*p)[i] = (char*)gmshMalloc(sizeof(char) * (v[i].size() + 1));
+      strcpy((*p)[i], v[i].c_str());
     }
     *size = v.size();
   }
diff --git a/api/gmshc.cpp b/api/gmshc.cpp
index 0a58c67be6..ba94f89242 100644
--- a/api/gmshc.cpp
+++ b/api/gmshc.cpp
@@ -45,7 +45,8 @@ void vectorstring2charptrptr(const std::vector<std::string> &v, char ***p, size_
 {
   *p = (char**)gmshMalloc(sizeof(char*) * v.size());
   for(size_t i = 0; i < v.size(); ++i){
-    (*p)[i] = strdup(v[i].c_str());
+    (*p)[i] = (char*)gmshMalloc(sizeof(char) * (v[i].size() + 1));
+    strcpy((*p)[i], v[i].c_str());
   }
   *size = v.size();
 }
-- 
GitLab