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)
|
: m_obj (obj), mp_cls (0), m_members (Qnil)
|
||||||
{
|
{
|
||||||
rb_gc_register_address (&m_obj);
|
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);
|
m_members = rb_obj_instance_variables (m_obj);
|
||||||
rb_gc_register_address (&m_members);
|
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 *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;
|
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 != cls_map.end () ? cls->second : 0;
|
||||||
return cls->second;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -218,6 +218,11 @@ void register_class (VALUE ruby_cls, const gsi::ClassBase *gsi_cls);
|
||||||
*/
|
*/
|
||||||
const gsi::ClassBase *find_cclass (VALUE k);
|
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
|
* @brief Finds the Ruby class for a gsi class
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue