sourcepawn/decompiler/platform_util.cpp
author David Anderson <danderson@mozilla.com>
Thu Aug 08 09:40:23 2013 -0700 (2013-08-08)
changeset 3976 bc77cfde7c5c
parent 2325 7a24ee5557fb
permissions -rw-r--r--
Add -Wno-narrowing to support building on GCC-4.7 (no bug, r=me).
dvander@2325
     1
#include <new>
dvander@2320
     2
#include <stdio.h>
dvander@2325
     3
#include <stdlib.h>
dvander@2320
     4
#include "platform_util.h"
dvander@2320
     5
dvander@2320
     6
size_t Sp_Format(char *buffer, size_t maxlength, const char *fmt, ...)
dvander@2320
     7
{
dvander@2320
     8
	size_t len;
dvander@2320
     9
dvander@2320
    10
	va_list ap;
dvander@2320
    11
	va_start(ap, fmt);
dvander@2320
    12
	len = Sp_FormatArgs(buffer, maxlength, fmt, ap);
dvander@2320
    13
	va_end(ap);
dvander@2320
    14
dvander@2320
    15
	return len;
dvander@2320
    16
}
dvander@2320
    17
dvander@2320
    18
size_t Sp_FormatArgs(char *buffer, size_t maxlength, const char *fmt, va_list ap)
dvander@2320
    19
{
dvander@2320
    20
	size_t len;
dvander@2320
    21
dvander@2320
    22
	len = vsnprintf(buffer, maxlength, fmt, ap);
dvander@2320
    23
dvander@2320
    24
	if (len >= maxlength)
dvander@2320
    25
	{
dvander@2320
    26
		buffer[maxlength - 1] = '\0';
dvander@2320
    27
		return (maxlength - 1);
dvander@2320
    28
	}
dvander@2320
    29
	else
dvander@2320
    30
	{
dvander@2320
    31
		return len;
dvander@2320
    32
	}
dvander@2320
    33
}
dvander@2320
    34
dvander@2325
    35
/* Overload a few things to prevent libstdc++ linking */
dvander@2325
    36
#if defined __linux__
dvander@2325
    37
extern "C" void __cxa_pure_virtual(void)
dvander@2325
    38
{
dvander@2325
    39
}
dvander@2325
    40
dvander@2325
    41
void *operator new(size_t size)
dvander@2325
    42
{
dvander@2325
    43
	return malloc(size);
dvander@2325
    44
}
dvander@2325
    45
dvander@2325
    46
void *operator new[](size_t size) 
dvander@2325
    47
{
dvander@2325
    48
	return malloc(size);
dvander@2325
    49
}
dvander@2325
    50
dvander@2325
    51
void operator delete(void *ptr) 
dvander@2325
    52
{
dvander@2325
    53
	free(ptr);
dvander@2325
    54
}
dvander@2325
    55
dvander@2325
    56
void operator delete[](void * ptr)
dvander@2325
    57
{
dvander@2325
    58
	free(ptr);
dvander@2325
    59
}
dvander@2325
    60
#endif