added empty param blocks to registered widgets that didn't have them

made LLDefaultChildRegistry::Register errors actually crash the client...llerrs doesn't work in static initializers
master
Richard Linden 2010-04-27 16:08:56 -07:00
parent 48b3ac20d9
commit fbc0e795b1
3 changed files with 11 additions and 1 deletions

View File

@ -432,11 +432,15 @@ private:
class LLFloaterView : public LLUICtrl
{
public:
struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>{};
protected:
LLFloaterView (const Params& p);
friend class LLUICtrlFactory;
public:
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
void reshapeFloater(S32 width, S32 height, BOOL called_from_parent, BOOL adjust_vertical);

View File

@ -435,7 +435,10 @@ void LLUICtrlFactory::registerWidget(const std::type_info* widget_type, const st
std::string* existing_tag = LLWidgetNameRegistry::instance().getValue(param_block_type);
if (existing_tag != NULL && *existing_tag != tag)
{
llerrs << "Duplicate entry for T::Params, try creating empty param block in derived classes that inherit T::Params" << llendl;
std::cerr << "Duplicate entry for T::Params, try creating empty param block in derived classes that inherit T::Params" << std::endl;
// forcing crash here
char* foo = 0;
*foo = 1;
}
LLWidgetNameRegistry ::instance().defaultRegistrar().add(param_block_type, tag);
// associate widget type with factory function

View File

@ -921,6 +921,9 @@ protected:
class LLNotificationChiclet : public LLSysWellChiclet
{
friend class LLUICtrlFactory;
public:
struct Params : public LLInitParam::Block<Params, LLSysWellChiclet::Params>{};
protected:
LLNotificationChiclet(const Params& p);