Don't crash on assigning nil to a string in lua
This commit is contained in:
parent
844300b95a
commit
3bade8625f
@ -13,6 +13,21 @@ namespace osrm
|
||||
{
|
||||
namespace extractor
|
||||
{
|
||||
namespace detail
|
||||
{
|
||||
inline void maybeSetString(std::string &str, const char* value)
|
||||
{
|
||||
if (value == nullptr)
|
||||
{
|
||||
str.clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
str = std::string(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This struct is the direct result of the call to ```way_function```
|
||||
@ -50,6 +65,20 @@ struct ExtractionWay
|
||||
void set_backward_mode(const TravelMode m) { backward_travel_mode = m; }
|
||||
TravelMode get_backward_mode() const { return backward_travel_mode; }
|
||||
|
||||
// wrappers to allow assigning nil (nullptr) to string values
|
||||
void SetName(const char* value) { detail::maybeSetString(name, value); }
|
||||
const char* GetName() const { return name.c_str(); }
|
||||
void SetRef(const char* value) { detail::maybeSetString(ref, value); }
|
||||
const char* GetRef() const { return ref.c_str(); }
|
||||
void SetDestinations(const char* value) { detail::maybeSetString(destinations, value); }
|
||||
const char* GetDestinations() const { return destinations.c_str(); }
|
||||
void SetPronunciation(const char* value) { detail::maybeSetString(pronunciation, value); }
|
||||
const char* GetPronunciation() const { return pronunciation.c_str(); }
|
||||
void SetTurnLanesForward(const char* value) { detail::maybeSetString(turn_lanes_forward, value); }
|
||||
const char* GetTurnLanesForward() const { return turn_lanes_forward.c_str(); }
|
||||
void SetTurnLanesBackward(const char* value) { detail::maybeSetString(turn_lanes_backward, value); }
|
||||
const char* GetTurnLanesBackward() const { return turn_lanes_backward.c_str(); }
|
||||
|
||||
double forward_speed;
|
||||
double backward_speed;
|
||||
double duration;
|
||||
|
@ -186,16 +186,16 @@ void LuaScriptingEnvironment::InitContext(LuaScriptingContext &context)
|
||||
// .def(luabind::constructor<>())
|
||||
.def_readwrite("forward_speed", &ExtractionWay::forward_speed)
|
||||
.def_readwrite("backward_speed", &ExtractionWay::backward_speed)
|
||||
.def_readwrite("name", &ExtractionWay::name)
|
||||
.def_readwrite("ref", &ExtractionWay::ref)
|
||||
.def_readwrite("pronunciation", &ExtractionWay::pronunciation)
|
||||
.def_readwrite("destinations", &ExtractionWay::destinations)
|
||||
.property("name", &ExtractionWay::GetName, &ExtractionWay::SetName)
|
||||
.property("ref", &ExtractionWay::GetRef, &ExtractionWay::SetRef)
|
||||
.property("pronunciation", &ExtractionWay::GetPronunciation, &ExtractionWay::SetPronunciation)
|
||||
.property("destinations", &ExtractionWay::GetDestinations, &ExtractionWay::SetDestinations)
|
||||
.property("turn_lanes_forward", &ExtractionWay::GetTurnLanesForward, &ExtractionWay::SetTurnLanesForward)
|
||||
.property("turn_lanes_backward", &ExtractionWay::GetTurnLanesBackward, &ExtractionWay::SetTurnLanesBackward)
|
||||
.def_readwrite("roundabout", &ExtractionWay::roundabout)
|
||||
.def_readwrite("is_access_restricted", &ExtractionWay::is_access_restricted)
|
||||
.def_readwrite("is_startpoint", &ExtractionWay::is_startpoint)
|
||||
.def_readwrite("duration", &ExtractionWay::duration)
|
||||
.def_readwrite("turn_lanes_forward", &ExtractionWay::turn_lanes_forward)
|
||||
.def_readwrite("turn_lanes_backward", &ExtractionWay::turn_lanes_backward)
|
||||
.def_readwrite("road_classification", &ExtractionWay::road_classification)
|
||||
.property(
|
||||
"forward_mode", &ExtractionWay::get_forward_mode, &ExtractionWay::set_forward_mode)
|
||||
|
Loading…
Reference in New Issue
Block a user