Skip to content
This repository was archived by the owner on Oct 12, 2022. It is now read-only.

Commit 68efbb3

Browse files
committed
Reduce null checks
1 parent 6c5108f commit 68efbb3

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/rt/cast_.d

+6-5
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,14 @@ extern (C):
1919
nothrow:
2020
pure:
2121

22-
// because using == does a dynamic cast, but we
23-
// are trying to implement dynamic cast.
22+
// Needed because ClassInfo.opEquals(Object) does a dynamic cast,
23+
// but we are trying to implement dynamic cast.
2424
extern (D) private bool areClassInfosEqual(scope const ClassInfo a, scope const ClassInfo b) @safe
2525
{
2626
if (a is b)
2727
return true;
28-
return (a && b) && a.name == b.name;
28+
// take care of potential duplicates across binaries
29+
return a.name == b.name;
2930
}
3031

3132
/******************************************
@@ -94,7 +95,7 @@ int _d_isbaseof2(scope ClassInfo oc, scope const ClassInfo c, scope ref size_t o
9495

9596
do
9697
{
97-
if (areClassInfosEqual(oc.base, c))
98+
if (oc.base && areClassInfosEqual(oc.base, c))
9899
return true;
99100

100101
// Bugzilla 2013: Use depth-first search to calculate offset
@@ -121,7 +122,7 @@ int _d_isbaseof(scope ClassInfo oc, scope const ClassInfo c) @safe
121122

122123
do
123124
{
124-
if (areClassInfosEqual(oc.base, c))
125+
if (oc.base && areClassInfosEqual(oc.base, c))
125126
return true;
126127

127128
foreach (iface; oc.interfaces)

0 commit comments

Comments
 (0)