@@ -153,23 +153,34 @@ int date_func(
153153 int argc , /* Total number of arguments passed to the function */
154154 unqlite_value * * argv /* Array of function arguments*/
155155 ){
156- time_t tt ;
157- struct tm * pNow ;
158- /* Get the current time */
159- time (& tt );
156+ struct tm * pNow ;
157+ #if defined(_MSC_VER ) || defined(__MINGW32__ )
158+ errno_t err ;
159+ __time64_t long_time ;
160+ struct tm newtime ;
161+ _time64 ( & long_time );
162+ err = _localtime64_s (& newtime , & long_time );
163+ if (err != 0 ) return UNQLITE_INVALID ;
164+ pNow = & newtime ;
165+ #else
166+ time_t tt ;
167+ /* Get the current time */
168+ time (& tt );
160169 pNow = localtime (& tt );
161- /*
162- * Return the current date.
163- */
164- unqlite_result_string_format (pCtx ,
165- "%04d-%02d-%02d %02d:%02d:%02d" , /* printf() style format */
166- pNow -> tm_year + 1900 , /* Year */
167- pNow -> tm_mday , /* Day of the month */
168- pNow -> tm_mon + 1 , /* Month number */
169- pNow -> tm_hour , /* Hour */
170- pNow -> tm_min , /* Minutes */
171- pNow -> tm_sec /* Seconds */
172- );
170+ #endif
171+ /*
172+ * Return the current date.
173+ */
174+ unqlite_result_string_format (pCtx ,
175+ "%04d-%02d-%02d %02d:%02d:%02d" , /* printf() style format */
176+ pNow -> tm_year + 1900 , /* Year */
177+ pNow -> tm_mday , /* Day of the month */
178+ pNow -> tm_mon + 1 , /* Month number */
179+ pNow -> tm_hour , /* Hour */
180+ pNow -> tm_min , /* Minutes */
181+ pNow -> tm_sec /* Seconds */
182+ );
183+
173184 /* All done */
174185 return UNQLITE_OK ;
175186}
@@ -246,11 +257,21 @@ int array_time_func(unqlite_context *pCtx, int argc, unqlite_value **argv)
246257{
247258 unqlite_value * pArray ; /* Our JSON Array */
248259 unqlite_value * pValue ; /* Array entries value */
249- time_t tt ;
250260 struct tm * pNow ;
251261 /* Get the current time first */
252- time (& tt );
262+ #if defined(_MSC_VER ) || defined(__MINGW32__ )
263+ errno_t err ;
264+ __time64_t long_time ;
265+ struct tm newtime ;
266+ _time64 ( & long_time );
267+ err = _localtime64_s (& newtime , & long_time );
268+ if (err != 0 ) return UNQLITE_INVALID ;
269+ pNow = & newtime ;
270+ #else
271+ time_t tt ;
272+ time (& tt );
253273 pNow = localtime (& tt );
274+ #endif
254275 /* Create a new array */
255276 pArray = unqlite_context_new_array (pCtx );
256277 /* Create a worker scalar value */
@@ -325,11 +346,21 @@ int object_date_func(unqlite_context *pCtx, int argc /* unused */, unqlite_value
325346{
326347 unqlite_value * pObject ; /* Our JSON object */
327348 unqlite_value * pValue ; /* Objecr entries value */
328- time_t tt ;
329349 struct tm * pNow ;
330350 /* Get the current time first */
331- time (& tt );
332- pNow = localtime (& tt );
351+ #if defined(_MSC_VER ) || defined(__MINGW32__ )
352+ errno_t err ;
353+ __time64_t long_time ;
354+ struct tm newtime ;
355+ _time64 ( & long_time );
356+ err = _localtime64_s (& newtime , & long_time );
357+ if (err != 0 ) return UNQLITE_INVALID ;
358+ pNow = & newtime ;
359+ #else
360+ time_t tt ;
361+ time (& tt );
362+ pNow = localtime (& tt );
363+ #endif
333364 /* Create a new JSON object */
334365 pObject = unqlite_context_new_array (pCtx );
335366 /* Create a worker scalar value */
0 commit comments