Browse Source

Merge branch 'fix-segfaults-on-x86_64' of https://github.com/hiltonm/libRocket into hiltonm-fix-segfaults-on-x86_64

Lloyd Weehuizen 15 years ago
parent
commit
0def6d8afd
3 changed files with 16 additions and 2 deletions
  1. 7 0
      Include/Rocket/Core/Platform.h
  2. 2 1
      Include/Rocket/Core/Types.h
  3. 7 1
      Include/Rocket/Core/Variant.h

+ 7 - 0
Include/Rocket/Core/Platform.h

@@ -46,6 +46,13 @@
 	#define ROCKET_DEBUG
 	#define ROCKET_DEBUG
 #endif
 #endif
 
 
+#if defined __x86_64__ || defined _M_X64 || defined __powerpc64__ || defined __alpha__ || defined __ia64__ || defined __s390__ || defined __s390x__
+    #define ROCKET_ARCH_64
+#else
+    #define ROCKET_ARCH_32
+#endif
+
+
 #if defined ROCKET_PLATFORM_WIN32
 #if defined ROCKET_PLATFORM_WIN32
 	// alignment of a member was sensitive to packing
 	// alignment of a member was sensitive to packing
 	#pragma warning(disable : 4121)
 	#pragma warning(disable : 4121)

+ 2 - 1
Include/Rocket/Core/Types.h

@@ -82,7 +82,8 @@ class Dictionary;
 
 
 // Types for external interfaces.
 // Types for external interfaces.
 typedef void* FileHandle;
 typedef void* FileHandle;
-typedef void* TextureHandle;
+//typedef void* TextureHandle;
+typedef uintptr_t TextureHandle;
 typedef void* CompiledGeometryHandle;
 typedef void* CompiledGeometryHandle;
 typedef void* DecoratorDataHandle;
 typedef void* DecoratorDataHandle;
 
 

+ 7 - 1
Include/Rocket/Core/Variant.h

@@ -33,6 +33,12 @@
 #include <Rocket/Core/TypeConverter.h>
 #include <Rocket/Core/TypeConverter.h>
 #include <list>
 #include <list>
 
 
+#ifdef ROCKET_ARCH_64
+    #define ROCKET_VARIANT_BUFFER_SIZE 32
+#else
+    #define ROCKET_VARIANT_BUFFER_SIZE 16
+#endif
+
 namespace Rocket {
 namespace Rocket {
 namespace Core {
 namespace Core {
 
 
@@ -150,7 +156,7 @@ private:
 		void Clear();
 		void Clear();
 		Type type;
 		Type type;
 
 
-		char data[16];
+		char data[ROCKET_VARIANT_BUFFER_SIZE];
 		void* data_ptr;
 		void* data_ptr;
 
 
 		mutable int reference_count;
 		mutable int reference_count;