]> git.saurik.com Git - winterboard.git/commitdiff
Fixed nlist() UIImages on Thumb.
authorJay Freeman (saurik) <saurik@saurik.com>
Sat, 15 Aug 2009 08:00:48 +0000 (08:00 +0000)
committerJay Freeman (saurik) <saurik@saurik.com>
Sat, 15 Aug 2009 08:00:48 +0000 (08:00 +0000)
UIImages.mm
control

index 1463e3412854ece091c2e134e64bf2e4db9d9acc..f83b7720d2f17c1cfe7bd3ce2a2a284f625dd699 100644 (file)
@@ -10,18 +10,34 @@ extern "C" {
 
 extern "C" NSData *UIImagePNGRepresentation(UIImage *image);
 
 
 extern "C" NSData *UIImagePNGRepresentation(UIImage *image);
 
+template <typename Type_>
+static void nlset(Type_ &function, struct nlist *nl, size_t index) {
+    struct nlist &name(nl[index]);
+    uintptr_t value(name.n_value);
+    if ((name.n_desc & N_ARM_THUMB_DEF) != 0)
+        value |= 0x00000001;
+    function = reinterpret_cast<Type_>(value);
+}
+
 int main(int argc, char *argv[]) {
     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 
     struct nlist nl[4];
 int main(int argc, char *argv[]) {
     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 
     struct nlist nl[4];
+
     memset(nl, 0, sizeof(nl));
     nl[0].n_un.n_name = (char *) "___mappedImages";
     nl[1].n_un.n_name = (char *) "__UISharedImageInitialize";
     nl[2].n_un.n_name = (char *) "_LoadMappedImageRef";
     nlist("/System/Library/Frameworks/UIKit.framework/UIKit", nl);
     memset(nl, 0, sizeof(nl));
     nl[0].n_un.n_name = (char *) "___mappedImages";
     nl[1].n_un.n_name = (char *) "__UISharedImageInitialize";
     nl[2].n_un.n_name = (char *) "_LoadMappedImageRef";
     nlist("/System/Library/Frameworks/UIKit.framework/UIKit", nl);
-    NSMutableDictionary **images = (id *) nl[0].n_value;
-    void (*__UISharedImageInitialize)(bool) = (void (*)(bool)) nl[1].n_value;
-    CGImageRef (*_LoadMappedImageRef)(CFStringRef) = (CGImageRef (*)(CFStringRef)) nl[2].n_value;
+
+    NSMutableDictionary **images;
+    nlset(images, nl, 0);
+
+    void (*__UISharedImageInitialize)(bool);
+    nlset(__UISharedImageInitialize, nl, 1);
+
+    CGImageRef (*_LoadMappedImageRef)(CFStringRef);
+    nlset(_LoadMappedImageRef, nl, 2);
 
     __UISharedImageInitialize(false);
 
 
     __UISharedImageInitialize(false);
 
diff --git a/control b/control
index 18abfa0010695536f7ddb23bf8751893f64b4852..a6bd3b706b3f8ac8626beba5ae659dd3a120e4ec 100644 (file)
--- a/control
+++ b/control
@@ -3,7 +3,7 @@ Priority: optional
 Section: System
 Maintainer: Jay Freeman (saurik) <saurik@saurik.com>
 Architecture: iphoneos-arm
 Section: System
 Maintainer: Jay Freeman (saurik) <saurik@saurik.com>
 Architecture: iphoneos-arm
-Version: 0.9.2992-1
+Version: 0.9.2993-1
 Description: more powerful, open-source SummerBoard
 Name: WinterBoard
 Depends: mobilesubstrate (>= 0.9.2958-1), killall
 Description: more powerful, open-source SummerBoard
 Name: WinterBoard
 Depends: mobilesubstrate (>= 0.9.2958-1), killall