@@ -288,16 +288,26 @@ void RARCH_LOG_V(const char *tag, const char *fmt, va_list ap)
288288#endif
289289#else /* !HAVE_QT && !__WINRT__ */
290290#if TARGET_OS_MAC /* any apple variant: macOS, iOS, tvOS, ... */
291- char buffer [ 2048 ] ;
291+ char * buffer = NULL ;
292292 va_list ap_cp ;
293293 va_copy (ap_cp , ap );
294- vsnprintf ( buffer , sizeof ( buffer ) , fmt , ap_cp );
294+ int r = vasprintf ( & buffer , fmt , ap_cp );
295295 va_end (ap_cp );
296+ if (r < 0 || !buffer )
297+ {
298+ /* Fallback to a minimal newline to keep output formatting sensible */
299+ buffer = (char * )malloc (2 );
300+ if (buffer )
301+ {
302+ buffer [0 ] = '\n' ;
303+ buffer [1 ] = '\0' ;
304+ }
305+ }
296306
297307#if TARGET_OS_OSX /* really macOS */
298308 /* macOS: output to stdout for developer convenience */
299309 printf ("%s %s" , tag_v , buffer );
300- #elif TARGET_OS_IPHONE /* iOS, tvOS, ... */
310+ #else /* iOS, tvOS, ... */
301311#if TARGET_OS_SIMULATOR
302312 /* iOS Simulator: output to stderr for Xcode console */
303313 fprintf (stderr , "%s %s" , tag_v , buffer );
@@ -323,15 +333,9 @@ void RARCH_LOG_V(const char *tag, const char *fmt, va_list ap)
323333 asl_log (asl_client , msg , ASL_LEVEL_NOTICE , "%s %s" , tag_v , buffer );
324334 asl_free (msg );
325335#endif
326- #endif /* TARGET_OS_IPHONE */
327-
328- /* Always write to file for all Apple platforms */
329- if (fp )
330- {
331- fprintf (fp , "%s %s" , tag_v , buffer );
332- fflush (fp );
333- }
334- #else
336+ #endif /* TARGET_OS_OSX */
337+ free (buffer );
338+ #endif /* TARGET_OS_MAC */
335339#if defined(HAVE_LIBNX )
336340 mutexLock (& g_verbosity -> mtx );
337341#endif
@@ -345,7 +349,6 @@ void RARCH_LOG_V(const char *tag, const char *fmt, va_list ap)
345349 mutexUnlock (& g_verbosity -> mtx );
346350#endif
347351
348- #endif
349352#endif
350353#endif
351354}
0 commit comments