mirror of
https://github.com/MariaDB/server.git
synced 2026-04-23 08:45:33 +02:00
Backporting revision from mysql-6.0-codebase-bugfixing.
Original revision: ------------------------------------------------------------ revno: 3789.1.9 revision-id: serg@mysql.com-20091229134448-phe834ukzmi0k2e3 parent: serg@mysql.com-20091227081418-bgfg952gzumn1k3h committer: Sergei Golubchik <serg@mysql.com> branch nick: 6.0-codebase timestamp: Tue 2009-12-29 14:44:48 +0100 message: better fix for Bug#48758 mysqltest crashes on sys_vars.collation_server_basic in gcov builds use setenv instead of putenv ------------------------------------------------------------
This commit is contained in:
parent
724caa519d
commit
5d61829b29
2 changed files with 14 additions and 11 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue