diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index dc5aaac37f4cc548992d9c872fda1cb73b20f2c3..44467c8584767da91c06ac1197e0b5c2164fe025 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -3370,11 +3370,12 @@ bool Parser::parseObjCSelectorArg(ObjCSelectorArgumentAST *&selNode, ObjCMessage
     selNode->colon_token = consumeToken();
 
     argNode = new (_pool) ObjCMessageArgumentAST;
-    ExpressionAST *expr = argNode->parameter_value_expression;
+    ExpressionAST **expr = &(argNode->parameter_value_expression);
     unsigned expressionStart = cursor();
-    if (parseAssignmentExpression(expr) && LA() == T_COLON && expr->asCastExpression()) {
+    if (parseAssignmentExpression(*expr) && LA() == T_COLON && (*expr)->asCastExpression()) {
         rewind(expressionStart);
-        parseUnaryExpression(expr);
+        parseUnaryExpression(*expr);
+        //
     }
     return true;
 }