diff --git a/src/cpp.c b/src/cpp.c
index c53a0d63fc5ee530c1f51a487ea3df951c34bbc5..f7c13bb0f2baffa6d6f0fc9905aa30ffb9a1f4de 100644
--- a/src/cpp.c
+++ b/src/cpp.c
@@ -563,8 +563,10 @@ static INT32 low_cpp(struct cpp *this,
 	    
 	    for(arg=0;arg<d->args;arg++)
 	    {
+	      if(arg && data[pos]==',') pos++;
 	      SKIPWHITE();
 	      arguments[arg].arg=data + pos;
+
 	      if(data[pos]==')')
 	      {
 		cpp_error(this,"Too few arguments to macro.");
@@ -598,8 +600,8 @@ static INT32 low_cpp(struct cpp *this,
 		  pos=find_end_parenthesis(this, data, len, pos);
 		  continue;
 		  
-		case ')': pos--;
-		case ',': 
+		case ')': 
+		case ',': pos--;
 		  break;
 		}
 		break;