diff --git a/src/libmdb/options.c b/src/libmdb/options.c index 56c550f..68ba32d 100644 --- a/src/libmdb/options.c +++ b/src/libmdb/options.c @@ -50,9 +50,10 @@ load_options() { char *opt; char *s; + char *ctx; if (!optset && (s=getenv("MDBOPTS"))) { - opt = strtok(s, ":"); + opt = strtok_r(s, ":", &ctx); while (opt) { if (!strcmp(opt, "use_index")) opts |= MDB_USE_INDEX; if (!strcmp(opt, "no_memo")) opts |= MDB_NO_MEMO; @@ -70,7 +71,7 @@ load_options() opts |= MDB_DEBUG_ROW; opts |= MDB_DEBUG_PROPS; } - opt = strtok(NULL,":"); + opt = strtok_r(NULL,":", &ctx); } } optset = 1; diff --git a/src/sql/mdbsql.c b/src/sql/mdbsql.c index 3a365b4..17e3e47 100644 --- a/src/sql/mdbsql.c +++ b/src/sql/mdbsql.c @@ -760,8 +760,9 @@ int mdb_sql_find_sargcol(MdbSargNode *node, gpointer data) * Plain integers are UNIX timestamps for backwards compatibility of parser */ if (col->col_type == MDB_DATETIME && node->val_type == MDB_INT) { - struct tm *tm = gmtime((time_t*)&node->value.i); - mdb_tm_to_date(tm, &node->value.d); + struct tm tm; + gmtime_r((time_t*)&node->value.i, &tm); + mdb_tm_to_date(&tm, &node->value.d); node->val_type = MDB_DOUBLE; } }