Browse Source

Merge commit '5372e08aba0d72dec4cf9fbca0f3723bba0914a8'

* commit '5372e08aba0d72dec4cf9fbca0f3723bba0914a8':
  Fix some minor warnings which have no effect on code produced
  Fix some issues found by the Visual Studio 2012 static analyzer.
David Wimsey 11 years ago
parent
commit
fb8ccd4bd4

+ 15 - 6
Include/Rocket/Core/StringBase.inl

@@ -160,17 +160,26 @@ void StringBase< T >::Reserve(size_type size)
 	const int BLOCK_SIZE = 16;
 	const int BLOCK_SIZE = 16;
 	new_size = (new_size+BLOCK_SIZE-1)&(~(BLOCK_SIZE-1));
 	new_size = (new_size+BLOCK_SIZE-1)&(~(BLOCK_SIZE-1));
 	
 	
-	buffer_size = new_size;
-	
 	if (value == (T*)local_buffer)
 	if (value == (T*)local_buffer)
 	{
 	{
-		T* new_value = (T*)realloc(NULL, buffer_size);
-		Copy(new_value, (T*)local_buffer, LOCAL_BUFFER_SIZE / sizeof(T));
-		value = new_value;
+		T* new_value = (T*)realloc(NULL, new_size);
+		ROCKET_ASSERTMSG(new_value, "Could not reserve memory for String, realloc failed.");
+		if(new_value != NULL)
+		{
+			buffer_size = new_size;
+			Copy(new_value, (T*)local_buffer, LOCAL_BUFFER_SIZE / sizeof(T));
+			value = new_value;
+		}
 	}
 	}
 	else
 	else
 	{
 	{
-		value = (T*)realloc(value, buffer_size);
+		T* new_value = (T*)realloc(value, new_size);
+		ROCKET_ASSERTMSG(new_value, "Could not reserve memory for String, realloc failed.");
+		if(new_value != NULL)
+		{
+			buffer_size = new_size;
+			value = new_value;
+		}
 	}
 	}
 }
 }
 
 

+ 2 - 2
Samples/invaders/src/main.cpp

@@ -57,9 +57,9 @@ void GameLoop()
 
 
 #if defined ROCKET_PLATFORM_WIN32
 #if defined ROCKET_PLATFORM_WIN32
 #include <windows.h>
 #include <windows.h>
-int APIENTRY WinMain(HINSTANCE, HINSTANCE, char*, int)
+int APIENTRY WinMain(HINSTANCE ROCKET_UNUSED_PARAMETER(instance_handle), HINSTANCE ROCKET_UNUSED_PARAMETER(previous_instance_handle), char* ROCKET_UNUSED_PARAMETER(command_line), int ROCKET_UNUSED_PARAMETER(command_show))
 #else
 #else
-int main(int, char**)
+int main(int ROCKET_UNUSED_PARAMETER(argc), char** ROCKET_UNUSED_PARAMETER(argv))
 #endif
 #endif
 {
 {
 	ShellRenderInterfaceOpenGL opengl_renderer;
 	ShellRenderInterfaceOpenGL opengl_renderer;

+ 7 - 0
Samples/shell/src/ShellRenderInterfaceOpenGL.cpp

@@ -142,6 +142,13 @@ bool ShellRenderInterfaceOpenGL::LoadTexture(Rocket::Core::TextureHandle& textur
 	size_t buffer_size = file_interface->Tell(file_handle);
 	size_t buffer_size = file_interface->Tell(file_handle);
 	file_interface->Seek(file_handle, 0, SEEK_SET);
 	file_interface->Seek(file_handle, 0, SEEK_SET);
 	
 	
+	ROCKET_ASSERTMSG(buffer_size > sizeof(TGAHeader), "Texture file size is smaller than TGAHeader, file must be corrupt or otherwise invalid");
+	if(buffer_size <= sizeof(TGAHeader))
+	{
+		file_interface->Close(file_handle);
+		return false;
+	}
+
 	char* buffer = new char[buffer_size];
 	char* buffer = new char[buffer_size];
 	file_interface->Read(buffer, buffer_size, file_handle);
 	file_interface->Read(buffer, buffer_size, file_handle);
 	file_interface->Close(file_handle);
 	file_interface->Close(file_handle);

+ 7 - 2
Source/Core/BaseXMLParser.cpp

@@ -447,8 +447,13 @@ bool BaseXMLParser::PeekString(const unsigned char* string, bool consume)
 				// Wierd, seems our buffer is too small, realloc it bigger.
 				// Wierd, seems our buffer is too small, realloc it bigger.
 				buffer_size *= 2;
 				buffer_size *= 2;
 				int read_offset = (int)(read - buffer);
 				int read_offset = (int)(read - buffer);
-				buffer = (unsigned char*) realloc(buffer, buffer_size);
-
+				unsigned char* new_buffer = (unsigned char*) realloc(buffer, buffer_size);
+				ROCKET_ASSERTMSG(new_buffer != NULL, "Unable to allocate larger buffer for Peek() call");
+				if(new_buffer == NULL)
+				{
+					return false;
+				}
+				buffer = new_buffer;
 				// Restore the read pointers.
 				// Restore the read pointers.
 				read = buffer + read_offset;
 				read = buffer + read_offset;
 				peek_read = read + peek_offset;
 				peek_read = read + peek_offset;

+ 3 - 0
Source/Core/Core.cpp

@@ -225,7 +225,10 @@ Context* CreateContext(const String& name, const Vector2i& dimensions, RenderInt
 
 
 	if (custom_render_interface == NULL &&
 	if (custom_render_interface == NULL &&
 		render_interface == NULL)
 		render_interface == NULL)
+	{
 		Log::Message(Log::LT_WARNING, "Failed to create context '%s', no render interface specified and no default render interface exists.", name.CString());
 		Log::Message(Log::LT_WARNING, "Failed to create context '%s', no render interface specified and no default render interface exists.", name.CString());
+		return NULL;
+	}
 
 
 	if (GetContext(name) != NULL)
 	if (GetContext(name) != NULL)
 	{
 	{

+ 1 - 1
Source/Core/Math.cpp

@@ -108,7 +108,7 @@ ROCKETCORE_API float DegreesToRadians(float angle)
 // Normalises and angle in radians
 // Normalises and angle in radians
 ROCKETCORE_API float NormaliseAngle(float angle)
 ROCKETCORE_API float NormaliseAngle(float angle)
 {
 {
-	return fmodf(angle, ROCKET_PI * 2.0);
+	return fmodf(angle, ROCKET_PI * 2.0f);
 }
 }
 
 
 // Calculates the square root of a value.
 // Calculates the square root of a value.

+ 6 - 2
Source/Core/StreamMemory.cpp

@@ -74,8 +74,12 @@ StreamMemory::StreamMemory(const StreamMemory& copy) : Stream(copy)
 	
 	
 	// Copy the buffer and pointer offsets
 	// Copy the buffer and pointer offsets
 	Reallocate( ( ( copy.buffer_used + BUFFER_INCREMENTS ) / BUFFER_INCREMENTS ) * BUFFER_INCREMENTS );
 	Reallocate( ( ( copy.buffer_used + BUFFER_INCREMENTS ) / BUFFER_INCREMENTS ) * BUFFER_INCREMENTS );
-	memcpy( buffer, copy.buffer, copy.buffer_used );
-	buffer_ptr = buffer + ( copy.buffer_ptr - copy.buffer );	
+	ROCKET_ASSERTMSG(buffer != NULL, "Could not allocate buffer for StreamMemory reader.");
+	if(buffer != NULL)
+	{
+		memcpy( buffer, copy.buffer, copy.buffer_used );
+		buffer_ptr = buffer + ( copy.buffer_ptr - copy.buffer );
+	}
 }
 }
 
 
 StreamMemory::~StreamMemory() 
 StreamMemory::~StreamMemory()