mirror of https://github.com/KLayout/klayout.git
RBA inspector does not crash on unknown class
This commit is contained in:
parent
726fe40e22
commit
93f9b693d3
|
|
@ -338,7 +338,7 @@ public:
|
|||
: m_obj (obj), mp_cls (0), m_members (Qnil)
|
||||
{
|
||||
rb_gc_register_address (&m_obj);
|
||||
mp_cls = find_cclass (rb_class_of (m_obj));
|
||||
mp_cls = find_cclass_maybe_null (rb_class_of (m_obj));
|
||||
m_members = rb_obj_instance_variables (m_obj);
|
||||
rb_gc_register_address (&m_members);
|
||||
|
||||
|
|
|
|||
|
|
@ -940,6 +940,13 @@ bool is_registered (const gsi::ClassBase *cls)
|
|||
}
|
||||
|
||||
const gsi::ClassBase *find_cclass (VALUE k)
|
||||
{
|
||||
const gsi::ClassBase *cls = find_cclass_maybe_null (k);
|
||||
tl_assert (cls != 0);
|
||||
return cls;
|
||||
}
|
||||
|
||||
const gsi::ClassBase *find_cclass_maybe_null (VALUE k)
|
||||
{
|
||||
std::map <VALUE, const gsi::ClassBase *>::const_iterator cls;
|
||||
|
||||
|
|
@ -954,8 +961,7 @@ const gsi::ClassBase *find_cclass (VALUE k)
|
|||
}
|
||||
}
|
||||
|
||||
tl_assert (cls != cls_map.end ());
|
||||
return cls->second;
|
||||
return cls != cls_map.end () ? cls->second : 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -218,6 +218,11 @@ void register_class (VALUE ruby_cls, const gsi::ClassBase *gsi_cls);
|
|||
*/
|
||||
const gsi::ClassBase *find_cclass (VALUE k);
|
||||
|
||||
/**
|
||||
* @brief Find the class declaration from the Ruby object
|
||||
*/
|
||||
const gsi::ClassBase *find_cclass_maybe_null (VALUE k);
|
||||
|
||||
/**
|
||||
* @brief Finds the Ruby class for a gsi class
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue