+ if (exprNode_isStringLiteral (e)
+ && (ctype_isArray (ct))
+ && (ctype_isChar (ctype_realType (ctype_baseArrayPtr (ct)))))
+ {
+ /*
+ ** If t is a char [], the literal is copied.
+ */
+
+ exprNode_checkStringLiteralLength (ct, e);
+ sRef_setDefState (ret->sref, SS_DEFINED, e->loc);
+ ret->val = multiVal_copy (e->val);
+
+ sRef_setNullTerminatedState (ret->sref);
+
+ if (multiVal_isDefined (e->val))
+ {
+ cstring slit = multiVal_forceString (e->val);
+ sRef_setLen (ret->sref, cstring_length (slit) + 1);
+ }
+
+ if (ctype_isFixedArray (ct))
+ {
+ sRef_setSize (ret->sref, size_toInt (ctype_getArraySize (ct)));
+ }
+ }
+ else
+ {
+ doAssign (ret, e, TRUE);
+ }