wow
[vg.git] / src / vg / vg_platform.h
index ac07582b91757cac669c1734182fcdd16a230030..b71a01d71d9abe345b49c1365c67644d86d861dc 100644 (file)
@@ -65,6 +65,17 @@ struct vg_achievement
 
 #endif
 
+static void vg_strncpy( const char *src, char *dst, u32 len )
+{
+   for( u32 i=0; i<len; i++ )
+   {
+      dst[i] = src[i];
+
+      if( !src[i] )
+         break;
+   }
+}
+
 #include <stdlib.h>
 
 #define VG_ZERO_NEW_MEM
@@ -72,10 +83,15 @@ struct vg_achievement
 static void vg_fatal_exit_loop( const char *error );
 static void *vg_alloc( size_t size )
 {
+   if( size == 0 )
+      return NULL;
+
    void *ptr = malloc( size );
    
    if( !ptr )
+   {
       vg_fatal_exit_loop( "Out of memory" );
+   }
 
 #ifdef VG_ZERO_NEW_MEM
    u8 *bytes = ptr;
@@ -93,7 +109,12 @@ static void *vg_realloc( void *orig, size_t size )
    void *ptr = realloc( orig, size );
 
    if( !ptr )
+   {
+      if( size == 0 )
+         return NULL;
+
       vg_fatal_exit_loop( "Out of memory" );
+   }
 
    return ptr;
 }
@@ -117,6 +138,17 @@ static void vg_required( void *ptr, const char *path )
    TYPE DECL = FN( PATH,##__VA_ARGS__ );                                       \
    vg_required( DECL, "Resource is required but failed to load: '" PATH "'" );
 
+#if 0
+VG_DEPRECATED
+char *strcpy(char* destination, const char* source);
+VG_DEPRECATED
+char *strncpy(char *restrict dest, const char *restrict src, size_t n);
+VG_DEPRECATED
+char *strcat(char *restrict dest, const char *restrict src);
+VG_DEPRECATED
+char *strncat(char *restrict dest, const char *restrict src, size_t n);
+#endif
+
 VG_DEPRECATED
 void *malloc( size_t size );