Skip to content

Commit eaa3fb5

Browse files
committed
Allow Delegate call on nullptr value without exception. Solved l32r error on ESP32, too.
1 parent fa23f02 commit eaa3fb5

File tree

1 file changed

+24
-16
lines changed

1 file changed

+24
-16
lines changed

src/circular_queue/Delegate.h

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -327,16 +327,17 @@ namespace delegate
327327
{
328328
if (FP == kind)
329329
{
330-
return fn(std::forward<P...>(args...));
330+
if (fn) return fn(std::forward<P...>(args...));
331331
}
332332
else if (FPA == kind)
333333
{
334-
return fnA(obj, std::forward<P...>(args...));
334+
if (fnA) return fnA(obj, std::forward<P...>(args...));
335335
}
336336
else
337337
{
338-
return functional(std::forward<P...>(args...));
338+
if (functional) return functional(std::forward<P...>(args...));
339339
}
340+
return R();
340341
}
341342

342343
protected:
@@ -541,12 +542,13 @@ namespace delegate
541542
{
542543
if (FP == kind)
543544
{
544-
return fn(std::forward<P...>(args...));
545+
if (fn) return fn(std::forward<P...>(args...));
545546
}
546547
else
547548
{
548-
return fnA(obj, std::forward<P...>(args...));
549+
if (fnA) return fnA(obj, std::forward<P...>(args...));
549550
}
551+
return R();
550552
}
551553

552554
protected:
@@ -748,12 +750,13 @@ namespace delegate
748750
{
749751
if (FP == kind)
750752
{
751-
return fn(std::forward<P...>(args...));
753+
if (fn) return fn(std::forward<P...>(args...));
752754
}
753755
else
754756
{
755-
return functional(std::forward<P...>(args...));
757+
if (functional) return functional(std::forward<P...>(args...));
756758
}
759+
return R();
757760
}
758761

759762
protected:
@@ -845,7 +848,8 @@ namespace delegate
845848

846849
inline R IRAM_ATTR operator()(P... args) const __attribute__((always_inline))
847850
{
848-
return fn(std::forward<P...>(args...));
851+
if (fn) return fn(std::forward<P...>(args...));
852+
return R();
849853
}
850854

851855
protected:
@@ -1127,16 +1131,17 @@ namespace delegate
11271131
{
11281132
if (FP == kind)
11291133
{
1130-
return fn();
1134+
if (fn) return fn();
11311135
}
11321136
else if (FPA == kind)
11331137
{
1134-
return fnA(obj);
1138+
if (fnA) return fnA(obj);
11351139
}
11361140
else
11371141
{
1138-
return functional();
1142+
if (functional) return functional();
11391143
}
1144+
return R();
11401145
}
11411146

11421147
protected:
@@ -1340,12 +1345,13 @@ namespace delegate
13401345
{
13411346
if (FP == kind)
13421347
{
1343-
return fn();
1348+
if (fn) return fn();
13441349
}
13451350
else
13461351
{
1347-
return fnA(obj);
1352+
if (fnA) return fnA(obj);
13481353
}
1354+
return R();
13491355
}
13501356

13511357
protected:
@@ -1547,12 +1553,13 @@ namespace delegate
15471553
{
15481554
if (FP == kind)
15491555
{
1550-
return fn();
1556+
if (fn) return fn();
15511557
}
15521558
else
15531559
{
1554-
return functional();
1560+
if (functional) return functional();
15551561
}
1562+
return R();
15561563
}
15571564

15581565
protected:
@@ -1644,7 +1651,8 @@ namespace delegate
16441651

16451652
inline R IRAM_ATTR operator()() const __attribute__((always_inline))
16461653
{
1647-
return fn();
1654+
if (fn) return fn();
1655+
return R();
16481656
}
16491657

16501658
protected:

0 commit comments

Comments
 (0)