diff options
-rw-r--r-- | client/mysqltest.cc | 20 | ||||
-rw-r--r-- | include/config-win.h | 5 |
2 files changed, 14 insertions, 11 deletions
diff --git a/client/mysqltest.cc b/client/mysqltest.cc index 43107d838ee..9c5e7d9f466 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -72,6 +72,10 @@ #define QUERY_SEND_FLAG 1 #define QUERY_REAP_FLAG 2 +#ifndef HAVE_SETENV +#error implement our portable setenv replacement in mysys +#endif + enum { OPT_SKIP_SAFEMALLOC=OPT_MAX_CLIENT_OPTION, OPT_PS_PROTOCOL, OPT_SP_PROTOCOL, OPT_CURSOR_PROTOCOL, OPT_VIEW_PROTOCOL, @@ -216,7 +220,6 @@ typedef struct int alloced_len; int int_dirty; /* do not update string if int is updated until first read */ int alloced; - char *env_s; } VAR; /*Perl/shell-like variable registers */ @@ -1941,7 +1944,6 @@ VAR *var_init(VAR *v, const char *name, int name_len, const char *val, tmp_var->alloced_len = val_alloc_len; tmp_var->int_val = (val) ? atoi(val) : 0; tmp_var->int_dirty = 0; - tmp_var->env_s = 0; return tmp_var; } @@ -2069,20 +2071,18 @@ void var_set(const char *var_name, const char *var_name_end, if (env_var) { - char buf[1024], *old_env_s= v->env_s; if (v->int_dirty) { sprintf(v->str_val, "%d", v->int_val); v->int_dirty= 0; v->str_val_len= strlen(v->str_val); } - my_snprintf(buf, sizeof(buf), "%.*s=%.*s", - v->name_len, v->name, - v->str_val_len, v->str_val); - if (!(v->env_s= my_strdup(buf, MYF(MY_WME)))) - die("Out of memory"); - putenv(v->env_s); - my_free(old_env_s, MYF(MY_ALLOW_ZERO_PTR)); + char oldc= v->name[v->name_len]; + if (oldc) + v->name[v->name_len]= 0; // setenv() expects \0-terminated strings + setenv(v->name, v->str_val, 1); // v->str_val is always \0-terminated + if (oldc) + v->name[v->name_len]= oldc; } DBUG_VOID_RETURN; } diff --git a/include/config-win.h b/include/config-win.h index f8d51165bc2..5d64261076d 100644 --- a/include/config-win.h +++ b/include/config-win.h @@ -318,9 +318,12 @@ inline ulonglong double2ulonglong(double d) #define strcasecmp stricmp #define strncasecmp strnicmp -#define HAVE_SNPRINTF /* Gave link error */ +#define HAVE_SNPRINTF 1 #define snprintf _snprintf +#define HAVE_SETENV 1 +#define setenv(VAR,VAL,X) _putenv_s(VAR,VAL) + #ifdef _MSC_VER #define HAVE_LDIV /* The optimizer breaks in zortech for ldiv */ #define HAVE_ANSI_INCLUDE |