From 5faa97e42c5cd5f838ad9b26fd340b6b946930e2 Mon Sep 17 00:00:00 2001
From: Joe Groff <arcata@gmail.com>
Date: Sun, 21 Feb 2010 21:06:00 -0800
Subject: [PATCH] alien.parser: favor parsing "foo*" as pointer-to-foo now

---
 basis/alien/c-types/c-types.factor | 4 +++-
 basis/alien/parser/parser.factor   | 2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/basis/alien/c-types/c-types.factor b/basis/alien/c-types/c-types.factor
index b038244cdd..9db6ac7f4a 100644
--- a/basis/alien/c-types/c-types.factor
+++ b/basis/alien/c-types/c-types.factor
@@ -304,7 +304,9 @@ CONSTANT: primitive-types
 
 : resolve-pointer-typedef ( type -- base-type )
     dup "c-type" word-prop dup word?
-    [ nip resolve-pointer-typedef ] [ drop ] if ;
+    [ nip resolve-pointer-typedef ] [
+        pointer? [ drop void* ] when
+    ] if ;
 
 : special-pointer-type ( type -- special-type )
     dup c-type-word? [
diff --git a/basis/alien/parser/parser.factor b/basis/alien/parser/parser.factor
index 50d1bfd320..dee5c6e1dd 100644
--- a/basis/alien/parser/parser.factor
+++ b/basis/alien/parser/parser.factor
@@ -18,8 +18,8 @@ IN: alien.parser
     {
         { [ dup "void" =         ] [ drop void ] }
         { [ CHAR: ] over member? ] [ parse-array-type parse-c-type-name prefix ] }
-        { [ dup search           ] [ parse-c-type-name ] }
         { [ "*" ?tail            ] [ (parse-c-type) <pointer> ] }
+        { [ dup search           ] [ parse-c-type-name ] }
         [ dup search [ ] [ no-word ] ?if ]
     } cond ;