mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-17 22:49:23 +02:00
Force shortcut boolean evaluation when rewriting length(Windows widestring) = 0.
This commit is contained in:
parent
8e58bbea61
commit
bb31f32941
@ -513,6 +513,7 @@ const
|
|||||||
|
|
||||||
{ COM widestrings have 32-bit lengths, and can explicitly have 0 while being non-nil. }
|
{ 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
|
if is_widestring(tinlinenode(L).left.resultdef) and (tf_winlikewidestring in target_info.flags) then
|
||||||
|
begin
|
||||||
{ Expand to “(pointer(L.left) = nil) or (PUint32(L.left)[-1] = 0)”. }
|
{ Expand to “(pointer(L.left) = nil) or (PUint32(L.left)[-1] = 0)”. }
|
||||||
resn:=caddnode.create_internal(orn,
|
resn:=caddnode.create_internal(orn,
|
||||||
resn,
|
resn,
|
||||||
@ -525,6 +526,8 @@ const
|
|||||||
),
|
),
|
||||||
cordconstnode.create(0,u32inttype,false))
|
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. }
|
tinlinenode(L).left:=nil; { Was stolen inside resn, and no longer of interest. }
|
||||||
|
|
||||||
{ resn now checks for Length = 0. For Length <> 0, invert. }
|
{ resn now checks for Length = 0. For Length <> 0, invert. }
|
||||||
|
Loading…
Reference in New Issue
Block a user