Fix warnings in MessagePage.cpp

/retroshare-gui/src/gui/settings/MessagePage.cpp:62:19: warning:
deleting object of polymorphic class type 'Rs::Msgs::MsgTagType' which
has non-virtual destructor might cause undefined behavior [-Wdelete-non-
virtual-dtor]
/retroshare-gui/src/gui/settings/MessagePage.cpp:62: warning: delete
called on non-final 'Rs::Msgs::MsgTagType' that has virtual functions
but non-virtual destructor
/retroshare-gui/src/gui/settings/MessagePage.cpp:86: warning: use of
old-style cast
/retroshare-gui/src/gui/settings/MessagePage.cpp:172: warning: zero as
null pointer constant
/retroshare-gui/src/gui/settings/MessagePage.cpp:176: warning: implicit
conversion changes signedness: 'int' to 'uint32_t' (aka 'unsigned int')
/retroshare-gui/src/gui/settings/MessagePage.cpp:203: warning: zero as
null pointer constant
/retroshare-gui/src/gui/settings/MessagePage.cpp:207: warning: implicit
conversion changes signedness: 'int' to 'uint32_t' (aka 'unsigned int')
/retroshare-gui/src/gui/settings/MessagePage.cpp:261: warning: implicit
conversion changes signedness: 'int' to 'uint32_t' (aka 'unsigned int')

/libretroshare/src/retroshare/rsmsgs.h:168: warning:
'Rs::Msgs::MessageInfo' has virtual functions but non-virtual destructor
/libretroshare/src/retroshare/rsmsgs.h:168: warning: 'MessageInfo' has
no out-of-line virtual method definitions; its vtable will be emitted in
every translation unit
/libretroshare/src/retroshare/rsmsgs.h:234: warning:
'Rs::Msgs::MsgInfoSummary' has virtual functions but non-virtual
destructor
/libretroshare/src/retroshare/rsmsgs.h:234: warning: 'MsgInfoSummary'
has no out-of-line virtual method definitions; its vtable will be
emitted in every translation unit
/libretroshare/src/retroshare/rsmsgs.h:261: warning:
'Rs::Msgs::MsgTagInfo' has virtual functions but non-virtual destructor
/libretroshare/src/retroshare/rsmsgs.h:328: warning: 'ChatId' has
virtual functions but non-virtual destructor
/libretroshare/src/retroshare/rsmsgs.h:400: warning: 'ChatLobbyInvite'
has virtual functions but non-virtual destructor
/libretroshare/src/retroshare/rsmsgs.h:420: warning:
'VisibleChatLobbyRecord' has virtual functions but non-virtual
destructor
/libretroshare/src/retroshare/rsmsgs.h:420: warning:
'VisibleChatLobbyRecord' has no out-of-line virtual method definitions;
its vtable will be emitted in every translation unit
/libretroshare/src/retroshare/rsmsgs.h:449: warning: 'ChatLobbyInfo' has
virtual functions but non-virtual destructor
/libretroshare/src/retroshare/rsmsgs.h:486: warning: 'RsMsgs' has no
out-of-line virtual method definitions; its vtable will be emitted in
every translation unit

About vtable:
https://stackoverflow.com/questions/23746941/what-is-the-meaning-of-
clangs-wweak-vtables
https://stackoverflow.com/questions/50463374/avoid-weak-vtable-warnings-
for-classes-only-defined-in-a-source-file
This commit is contained in:
Phenom 2018-10-13 15:50:14 +02:00
parent a30e2c3400
commit 358f27be06
2 changed files with 25 additions and 15 deletions

View file

@ -167,8 +167,10 @@ class MessageInfo_v2
struct MessageInfo : RsSerializable struct MessageInfo : RsSerializable
{ {
MessageInfo(): msgflags(0), size(0), count(0), ts(0) {} MessageInfo(): msgflags(0), size(0), count(0), ts(0) {}
std::string msgId; virtual ~MessageInfo() = default;
std::string msgId;
RsPeerId rspeerid_srcId; RsPeerId rspeerid_srcId;
RsGxsId rsgxsid_srcId; RsGxsId rsgxsid_srcId;
@ -230,10 +232,10 @@ struct MessageInfo : RsSerializable
} }
}; };
struct MsgInfoSummary : RsSerializable struct MsgInfoSummary : RsSerializable
{ {
MsgInfoSummary() : msgflags(0), count(0), ts(0) {} MsgInfoSummary() : msgflags(0), count(0), ts(0) {}
virtual ~MsgInfoSummary() = default;
std::string msgId; std::string msgId;
RsPeerId srcId; RsPeerId srcId;
@ -260,6 +262,8 @@ struct MsgInfoSummary : RsSerializable
struct MsgTagInfo : RsSerializable struct MsgTagInfo : RsSerializable
{ {
virtual ~MsgTagInfo() = default;
std::string msgId; std::string msgId;
std::list<uint32_t> tagIds; std::list<uint32_t> tagIds;
@ -272,6 +276,7 @@ struct MsgTagInfo : RsSerializable
struct MsgTagType : RsSerializable struct MsgTagType : RsSerializable
{ {
virtual ~MsgTagType() = default;
/* map containing tagId -> pair (text, rgb color) */ /* map containing tagId -> pair (text, rgb color) */
std::map<uint32_t, std::pair<std::string, uint32_t> > types; std::map<uint32_t, std::pair<std::string, uint32_t> > types;
@ -326,7 +331,9 @@ struct DistantChatPeerInfo
class ChatId : RsSerializable class ChatId : RsSerializable
{ {
public: public:
ChatId(); ChatId();
virtual ~ChatId() = default;
explicit ChatId(RsPeerId id); explicit ChatId(RsPeerId id);
explicit ChatId(ChatLobbyId id); explicit ChatId(ChatLobbyId id);
explicit ChatId(DistantChatPeerId id); explicit ChatId(DistantChatPeerId id);
@ -398,6 +405,8 @@ public:
class ChatLobbyInvite : RsSerializable class ChatLobbyInvite : RsSerializable
{ {
public: public:
virtual ~ChatLobbyInvite() = default;
ChatLobbyId lobby_id ; ChatLobbyId lobby_id ;
RsPeerId peer_id ; RsPeerId peer_id ;
std::string lobby_name ; std::string lobby_name ;
@ -418,7 +427,8 @@ public:
class VisibleChatLobbyRecord : RsSerializable class VisibleChatLobbyRecord : RsSerializable
{ {
public: public:
VisibleChatLobbyRecord(): lobby_id(0), total_number_of_peers(0), last_report_time(0){} VisibleChatLobbyRecord(): lobby_id(0), total_number_of_peers(0), last_report_time(0){}
virtual ~VisibleChatLobbyRecord() = default;
ChatLobbyId lobby_id ; // unique id of the lobby ChatLobbyId lobby_id ; // unique id of the lobby
std::string lobby_name ; // name to use for this lobby std::string lobby_name ; // name to use for this lobby
@ -443,10 +453,11 @@ public:
} }
}; };
class ChatLobbyInfo : RsSerializable class ChatLobbyInfo : RsSerializable
{ {
public: public:
virtual ~ChatLobbyInfo() = default;
ChatLobbyId lobby_id ; // unique id of the lobby ChatLobbyId lobby_id ; // unique id of the lobby
std::string lobby_name ; // name to use for this lobby std::string lobby_name ; // name to use for this lobby
std::string lobby_topic ; // topic to use for this lobby std::string lobby_topic ; // topic to use for this lobby
@ -486,7 +497,7 @@ class RsMsgs
public: public:
RsMsgs() {} RsMsgs() {}
virtual ~RsMsgs() {} virtual ~RsMsgs() = default;
/****************************************/ /****************************************/
/* Message Items */ /* Message Items */
@ -896,6 +907,5 @@ virtual bool closeDistantChatConnexion(const DistantChatPeerId& pid)=0;
}; };
#endif #endif

View file

@ -59,7 +59,7 @@ MessagePage::MessagePage(QWidget * parent, Qt::WindowFlags flags)
MessagePage::~MessagePage() MessagePage::~MessagePage()
{ {
delete(m_pTags); delete(m_pTags);
} }
void MessagePage::distantMsgsComboBoxChanged(int i) void MessagePage::distantMsgsComboBoxChanged(int i)
@ -83,7 +83,7 @@ void MessagePage::distantMsgsComboBoxChanged(int i)
void MessagePage::updateMsgToReadOnActivate() { Settings->setMsgSetToReadOnActivate(ui.setMsgToReadOnActivate->isChecked()); } void MessagePage::updateMsgToReadOnActivate() { Settings->setMsgSetToReadOnActivate(ui.setMsgToReadOnActivate->isChecked()); }
void MessagePage::updateLoadEmbededImages() { Settings->setMsgLoadEmbeddedImages(ui.loadEmbeddedImages->isChecked()); } void MessagePage::updateLoadEmbededImages() { Settings->setMsgLoadEmbeddedImages(ui.loadEmbeddedImages->isChecked()); }
void MessagePage::updateMsgOpen() { Settings->setMsgOpen((RshareSettings::enumMsgOpen) ui.openComboBox->itemData(ui.openComboBox->currentIndex()).toInt());} void MessagePage::updateMsgOpen() { Settings->setMsgOpen( static_cast<RshareSettings::enumMsgOpen>(ui.openComboBox->itemData(ui.openComboBox->currentIndex()).toInt()) ); }
void MessagePage::updateDistantMsgs() { Settings->setValue("DistantMessages", ui.comboBox->currentIndex()); } void MessagePage::updateDistantMsgs() { Settings->setValue("DistantMessages", ui.comboBox->currentIndex()); }
void MessagePage::updateMsgTags() void MessagePage::updateMsgTags()
@ -169,11 +169,11 @@ void MessagePage::addTag()
void MessagePage::editTag() void MessagePage::editTag()
{ {
QListWidgetItem *pItemWidget = ui.tags_listWidget->currentItem(); QListWidgetItem *pItemWidget = ui.tags_listWidget->currentItem();
if (pItemWidget == NULL) { if (!pItemWidget) {
return; return;
} }
uint32_t nId = pItemWidget->data(Qt::UserRole).toInt(); uint32_t nId = pItemWidget->data(Qt::UserRole).toUInt();
if (nId == 0) { if (nId == 0) {
return; return;
} }
@ -200,11 +200,11 @@ void MessagePage::editTag()
void MessagePage::deleteTag() void MessagePage::deleteTag()
{ {
QListWidgetItem *pItemWidget = ui.tags_listWidget->currentItem(); QListWidgetItem *pItemWidget = ui.tags_listWidget->currentItem();
if (pItemWidget == NULL) { if (!pItemWidget) {
return; return;
} }
uint32_t nId = pItemWidget->data(Qt::UserRole).toInt(); uint32_t nId = pItemWidget->data(Qt::UserRole).toUInt();
if (nId == 0) { if (nId == 0) {
return; return;
} }
@ -258,7 +258,7 @@ void MessagePage::currentRowChangedTag(int row)
if (pItemWidget) { if (pItemWidget) {
bEditEnable = true; bEditEnable = true;
uint32_t nId = pItemWidget->data(Qt::UserRole).toInt(); uint32_t nId = pItemWidget->data(Qt::UserRole).toUInt();
if (nId >= RS_MSGTAGTYPE_USER) { if (nId >= RS_MSGTAGTYPE_USER) {
bDeleteEnable = true; bDeleteEnable = true;