]> git.sur5r.net Git - cc65/commitdiff
Fixed a problem with function pointer conversion.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 28 Jul 2009 19:21:38 +0000 (19:21 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 28 Jul 2009 19:21:38 +0000 (19:21 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3978 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/typeconv.c

index 86c07ec884b5c966974fb77fea3efc01b5947bc3..e9f72ee11347737e9141c4d5f485fa64027eb54d 100644 (file)
@@ -168,6 +168,16 @@ void TypeConversion (ExprDesc* Expr, Type* NewType)
  * impossible.
  */
 {
+#if 0
+    /* Debugging */
+    printf ("Expr:\n=======================================\n");
+    PrintExprDesc (stdout, Expr);
+    printf ("Type:\n=======================================\n");
+    PrintType (stdout, NewType);
+    printf ("\n");
+    PrintRawType (stdout, NewType);
+#endif
+
     /* First, do some type checking */
     if (IsTypeVoid (NewType) || IsTypeVoid (Expr->Type)) {
        /* If one of the sides are of type void, output a more apropriate
@@ -247,8 +257,8 @@ void TypeConversion (ExprDesc* Expr, Type* NewType)
            /* Assignment of function to function pointer is allowed, provided
             * that both functions have the same parameter list.
             */
-                   if (TypeCmp (NewType, Expr->Type) < TC_EQUAL) {
-               Error ("Incompatible types");
+                   if (TypeCmp (NewType, Expr->Type) < TC_COMPATIBLE) {
+                Error ("Incompatible types");
            }
        } else {
            Error ("Incompatible types");