* src/SDCCast.c (expandInlineFuncs): fixed bug 1875869
authorMaartenBrock <MaartenBrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 24 Feb 2008 16:35:14 +0000 (16:35 +0000)
committerMaartenBrock <MaartenBrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 24 Feb 2008 16:35:14 +0000 (16:35 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@5042 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/SDCCast.c

index e0b1aa68bd8c6e2c947afaefd305e873fd2ec95d..de4bd271db3e3fbfa1f70803140ebdf5e1796447 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-02-24 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * src/SDCCast.c (expandInlineFuncs): fixed bug 1875869
+
 2008-02-22 Philipp Klaus Krause <pkk AT spth.de>
 
        * src/z80/gen.c (genMult): Rewrote 8-bit multiplication by constant,
index fa33a799f7b93e287c1a908182b69952222ff75e..2fd8318631ba7ba7967b58fe13b53ec506e6d055 100644 (file)
@@ -4154,7 +4154,7 @@ decorateType (ast * tree, RESULT_TYPE resultType)
                   werrorfl (tree->filename, tree->lineno, W_COMP_RANGE,
                           ccr_result == CCR_ALWAYS_TRUE ? "true" : "false");
                 return decorateType (newAst_VALUE (constCharVal (
-                                   ccr_result == CCR_ALWAYS_TRUE ? 1 : 0)),
+                                   (unsigned char)(ccr_result == CCR_ALWAYS_TRUE ? 1 : 0))),
                                                    resultType);
               case CCR_OK:
               default:
@@ -6303,14 +6303,19 @@ expandInlineFuncs (ast * tree, ast * block)
           while (args)
             {
               symbol * temparg;
-              ast * passedarg;
               ast * assigntree;
-              symbol * parm = copySymbol (args->sym);
+              symbol * parm;
+              ast * passedarg = inlineFindParm (tree->right, argIndex);
+              
+              if (!passedarg)
+                {
+                  werror(E_TOO_FEW_PARMS);
+                  break;
+                }
 
               temparg = inlineTempVar (args->sym->type, tree->level+1);
               inlineAddDecl (temparg, inlinetree, FALSE);
 
-              passedarg = inlineFindParm (tree->right, argIndex);
               assigntree = newNode ('=',
                                     newAst_VALUE (symbolVal (temparg)),
                                     passedarg);
@@ -6318,6 +6323,7 @@ expandInlineFuncs (ast * tree, ast * block)
                                            assigntree,
                                            inlinetree->right);
 
+              parm = copySymbol (args->sym);
               inlineAddDecl (parm, inlinetree2, FALSE);
               parm->_isparm = 0;