Open
Bug 1280752
Opened 8 years ago
Updated 2 years ago
(coverity) uninitialized scalar variable: mailnews/imap/src/nsImapMailFolder.cpp: |rv| is not set value always before being returned as function return value.
Categories
(MailNews Core :: Networking: IMAP, defect)
MailNews Core
Networking: IMAP
Tracking
(Not tracked)
NEW
People
(Reporter: ishikawa, Unassigned)
References
(Blocks 1 open bug, )
Details
(Keywords: coverity, Whiteboard: CID 1137537)
Coverity found this:
|rv| is not set always, and is returned as function value.
4131nsresult nsImapMailFolder::MoveIncorporatedMessage(nsIMsgDBHdr *mailHdr,
4132 nsIMsgDatabase *sourceDB,
4133 const nsACString& destFolderUri,
4134 nsIMsgFilter *filter,
4135 nsIMsgWindow *msgWindow)
4136{
1. var_decl: Declaring variable rv without initializer.
4137 nsresult rv;
2. Condition this->m_moveCoalescer, taking false branch
4138 if (m_moveCoalescer)
4139 {
4140 nsCOMPtr<nsIRDFService> rdf(do_GetService(kRDFServiceCID, &rv));
4141 NS_ENSURE_SUCCESS(rv, rv);
4142 nsCOMPtr<nsIRDFResource> res;
4143 rv = rdf->GetResource(destFolderUri, getter_AddRefs(res));
4144 if (NS_FAILED(rv))
4145 return rv;
4146
4147 nsCOMPtr<nsIMsgFolder> destIFolder(do_QueryInterface(res, &rv));
4148 if (NS_FAILED(rv))
4149 return rv;
4150
4151 if (destIFolder)
4152 {
4153 // check if the destination is a real folder (by checking for null parent)
4154 // and if it can file messages (e.g., servers or news folders can't file messages).
4155 // Or read only imap folders...
4156 bool canFileMessages = true;
4157 nsCOMPtr<nsIMsgFolder> parentFolder;
4158 destIFolder->GetParent(getter_AddRefs(parentFolder));
4159 if (parentFolder)
4160 destIFolder->GetCanFileMessages(&canFileMessages);
4161 if (filter && (!parentFolder || !canFileMessages))
4162 {
4163 filter->SetEnabled(false);
4164 m_filterList->SaveToDefaultFile();
4165 destIFolder->ThrowAlertMsg("filterDisabled",msgWindow);
4166 return NS_MSG_NOT_A_MAIL_FOLDER;
4167 }
4168 // put the header into the source db, since it needs to be there when we copy it
4169 // and we need a valid header to pass to StartAsyncCopyMessagesInto
4170 nsMsgKey keyToFilter;
4171 mailHdr->GetMessageKey(&keyToFilter);
4172
4173 if (sourceDB && destIFolder)
4174 {
4175 bool imapDeleteIsMoveToTrash = DeleteIsMoveToTrash();
4176 m_moveCoalescer->AddMove (destIFolder, keyToFilter);
4177 // For each folder, we need to keep track of the ids we want to move to that
4178 // folder - we used to store them in the MSG_FolderInfo and then when we'd finished
4179 // downloading headers, we'd iterate through all the folders looking for the ones
4180 // that needed messages moved into them - perhaps instead we could
4181 // keep track of nsIMsgFolder, nsTArray<nsMsgKey> pairs here in the imap code.
4182 // nsTArray<nsMsgKey> *idsToMoveFromInbox = msgFolder->GetImapIdsToMoveFromInbox();
4183 // idsToMoveFromInbox->AppendElement(keyToFilter);
4184 if (imapDeleteIsMoveToTrash)
4185 {
4186 }
4187 bool isRead = false;
4188 mailHdr->GetIsRead(&isRead);
4189 if (imapDeleteIsMoveToTrash)
4190 rv = NS_OK;
4191 }
4192 }
4193 }
4194
4195 // we have to return an error because we do not actually move the message
4196 // it is done async and that can fail
CID 1137537 (#1 of 1): Uninitialized scalar variable (UNINIT)3. uninit_use: Using uninitialized value rv.
4197 return rv;
4198}
Observation:
We should decide what to return in |rv| when
(m_moveCoalescer) is NOT true.
The comment before |return rv| at the end of the function is disturbing.
4195 // we have to return an error because we do not actually move the message
4196 // it is done async and that can fail
Updated•2 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•