diff --git a/compiler/nadd.pas b/compiler/nadd.pas index 93c812314c..aec132bce1 100644 --- a/compiler/nadd.pas +++ b/compiler/nadd.pas @@ -513,18 +513,21 @@ const { COM widestrings have 32-bit lengths, and can explicitly have 0 while being non-nil. } if is_widestring(tinlinenode(L).left.resultdef) and (tf_winlikewidestring in target_info.flags) then - { Expand to “(pointer(L.left) = nil) or (PUint32(L.left)[-1] = 0)”. } - resn:=caddnode.create_internal(orn, - resn, - caddnode.create_internal(equaln, - ctypeconvnode.create_internal( - cderefnode.create( - caddnode.create_internal(subn,ctypeconvnode.create_internal(tinlinenode(L).left.getcopy,voidpointertype), - cordconstnode.create(sizeof(uint32),ptruinttype,false)) - ),u32inttype - ), - cordconstnode.create(0,u32inttype,false)) - ); + begin + { Expand to “(pointer(L.left) = nil) or (PUint32(L.left)[-1] = 0)”. } + resn:=caddnode.create_internal(orn, + resn, + caddnode.create_internal(equaln, + ctypeconvnode.create_internal( + cderefnode.create( + caddnode.create_internal(subn,ctypeconvnode.create_internal(tinlinenode(L).left.getcopy,voidpointertype), + cordconstnode.create(sizeof(uint32),ptruinttype,false)) + ),u32inttype + ), + cordconstnode.create(0,u32inttype,false)) + ); + include(taddnode(resn).addnodeflags,anf_short_bool); + end; tinlinenode(L).left:=nil; { Was stolen inside resn, and no longer of interest. } { resn now checks for Length = 0. For Length <> 0, invert. }