forked from bblanchon/ArduinoJson
Added an assert to detect too large variants (issue #1414)
This commit is contained in:
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include <stdint.h> // int8_t, int16_t
|
#include <stdint.h> // int8_t, int16_t
|
||||||
|
|
||||||
|
#include <ArduinoJson/Polyfills/limits.hpp>
|
||||||
#include <ArduinoJson/Polyfills/type_traits.hpp>
|
#include <ArduinoJson/Polyfills/type_traits.hpp>
|
||||||
#include <ArduinoJson/Strings/StoragePolicy.hpp>
|
#include <ArduinoJson/Strings/StoragePolicy.hpp>
|
||||||
#include <ArduinoJson/Variant/VariantContent.hpp>
|
#include <ArduinoJson/Variant/VariantContent.hpp>
|
||||||
@ -61,11 +62,19 @@ class VariantSlot {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setNext(VariantSlot* slot) {
|
void setNext(VariantSlot* slot) {
|
||||||
|
ARDUINOJSON_ASSERT(!slot || slot - this >=
|
||||||
|
numeric_limits<VariantSlotDiff>::lowest());
|
||||||
|
ARDUINOJSON_ASSERT(!slot || slot - this <=
|
||||||
|
numeric_limits<VariantSlotDiff>::highest());
|
||||||
_next = VariantSlotDiff(slot ? slot - this : 0);
|
_next = VariantSlotDiff(slot ? slot - this : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setNextNotNull(VariantSlot* slot) {
|
void setNextNotNull(VariantSlot* slot) {
|
||||||
ARDUINOJSON_ASSERT(slot != 0);
|
ARDUINOJSON_ASSERT(slot != 0);
|
||||||
|
ARDUINOJSON_ASSERT(slot - this >=
|
||||||
|
numeric_limits<VariantSlotDiff>::lowest());
|
||||||
|
ARDUINOJSON_ASSERT(slot - this <=
|
||||||
|
numeric_limits<VariantSlotDiff>::highest());
|
||||||
_next = VariantSlotDiff(slot - this);
|
_next = VariantSlotDiff(slot - this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user