Bug 1380302 - Fix -Wmaybe-uninitialized warnings in Places. r=adw draft
authorMarco Bonardo <mbonardo@mozilla.com>
Wed, 12 Jul 2017 21:29:58 +0200
changeset 607745 dfaab44c56d811c551999208025fe449ed3c1d92
parent 607503 09a4282d1172ac255038e7ccacfd772140b219e2
child 637135 7eea18b82237531c513fc84e91da101fe8831f75
push id68097
push usermak77@bonardo.net
push dateWed, 12 Jul 2017 20:16:06 +0000
reviewersadw
bugs1380302
milestone56.0a1
Bug 1380302 - Fix -Wmaybe-uninitialized warnings in Places. r=adw MozReview-Commit-ID: 2HxDMhYzaib
toolkit/components/places/nsNavBookmarks.cpp
toolkit/components/places/nsNavBookmarks.h
toolkit/components/places/nsNavHistoryQuery.cpp
--- a/toolkit/components/places/nsNavBookmarks.cpp
+++ b/toolkit/components/places/nsNavBookmarks.cpp
@@ -89,17 +89,17 @@ public:
     }
   }
 
   NS_IMETHOD HandleResult(mozIStorageResultSet* aResultSet)
   {
     nsCOMPtr<mozIStorageRow> row;
     while (NS_SUCCEEDED(aResultSet->GetNextRow(getter_AddRefs(row))) && row) {
       // Skip tags, for the use-cases of this async getter they are useless.
-      int64_t grandParentId, tagsFolderId;
+      int64_t grandParentId = -1, tagsFolderId = -1;
       nsresult rv = row->GetInt64(5, &grandParentId);
       NS_ENSURE_SUCCESS(rv, rv);
       rv = mBookmarksSvc->GetTagsFolder(&tagsFolderId);
       NS_ENSURE_SUCCESS(rv, rv);
       if (grandParentId == tagsFolderId) {
         continue;
       }
 
@@ -550,19 +550,17 @@ nsNavBookmarks::InsertBookmarkInDB(int64
     // Update last modified date of the ancestors.
     // TODO (bug 408991): Doing this for all ancestors would be slow without a
     //                    nested tree, so for now update only the parent.
     rv = SetItemDateInternal(LAST_MODIFIED, syncChangeDelta, aParentId,
                              aDateAdded);
     NS_ENSURE_SUCCESS(rv, rv);
   }
 
-  int64_t tagsRootId;
-  rv = GetTagsFolder(&tagsRootId);
-  NS_ENSURE_SUCCESS(rv, rv);
+  int64_t tagsRootId = TagsRootId();
   bool isTagging = aGrandParentId == tagsRootId;
   if (isTagging) {
     // If we're tagging a bookmark, increment the change counter for all
     // bookmarks with the URI.
     rv = AddSyncChangesForBookmarksWithURI(aURI, syncChangeDelta);
     NS_ENSURE_SUCCESS(rv, rv);
   }
 
@@ -646,19 +644,17 @@ nsNavBookmarks::InsertBookmark(int64_t a
   TruncateTitle(aTitle, title);
 
   rv = InsertBookmarkInDB(placeId, BOOKMARK, aFolder, index, title, dateAdded,
                           0, folderGuid, grandParentId, aURI, aSource,
                           aNewBookmarkId, guid);
   NS_ENSURE_SUCCESS(rv, rv);
 
   // If not a tag, recalculate frecency for this entry, since it changed.
-  int64_t tagsRootId;
-  rv = GetTagsFolder(&tagsRootId);
-  NS_ENSURE_SUCCESS(rv, rv);
+  int64_t tagsRootId = TagsRootId();
   if (grandParentId != tagsRootId) {
     rv = history->UpdateFrecency(placeId);
     NS_ENSURE_SUCCESS(rv, rv);
   }
 
   rv = transaction.Commit();
   NS_ENSURE_SUCCESS(rv, rv);
 
@@ -710,19 +706,17 @@ nsNavBookmarks::RemoveItem(int64_t aItem
 
   BookmarkData bookmark;
   nsresult rv = FetchItemInfo(aItemId, bookmark);
   NS_ENSURE_SUCCESS(rv, rv);
 
   mozStorageTransaction transaction(mDB->MainConn(), false);
 
   // First, if not a tag, remove item annotations.
-  int64_t tagsRootId;
-  rv = GetTagsFolder(&tagsRootId);
-  NS_ENSURE_SUCCESS(rv, rv);
+  int64_t tagsRootId = TagsRootId();
   bool isUntagging = bookmark.grandParentId == tagsRootId;
   if (bookmark.parentId != tagsRootId && !isUntagging) {
     nsAnnotationService* annosvc = nsAnnotationService::GetAnnotationService();
     NS_ENSURE_TRUE(annosvc, NS_ERROR_OUT_OF_MEMORY);
     rv = annosvc->RemoveItemAnnotations(bookmark.id, aSource);
     NS_ENSURE_SUCCESS(rv, rv);
   }
 
@@ -908,19 +902,17 @@ nsNavBookmarks::CreateContainerWithID(in
   rv = InsertBookmarkInDB(-1, FOLDER, aParent, index,
                           title, dateAdded, 0, folderGuid, grandParentId,
                           nullptr, aSource, aNewFolder, guid);
   NS_ENSURE_SUCCESS(rv, rv);
 
   rv = transaction.Commit();
   NS_ENSURE_SUCCESS(rv, rv);
 
-  int64_t tagsRootId;
-  rv = GetTagsFolder(&tagsRootId);
-  NS_ENSURE_SUCCESS(rv, rv);
+  int64_t tagsRootId = TagsRootId();
 
   NOTIFY_BOOKMARKS_OBSERVERS(mCanNotify, mCacheObservers, mObservers,
                              SKIP_TAGS(aParent == tagsRootId),
                              OnItemAdded(*aNewFolder, aParent, index, FOLDER,
                                          nullptr, title, dateAdded, guid,
                                          folderGuid, aSource));
 
   *aIndex = index;
@@ -1198,17 +1190,17 @@ nsNavBookmarks::GetDescendantChildren(in
 
 
 NS_IMETHODIMP
 nsNavBookmarks::RemoveFolderChildren(int64_t aFolderId, uint16_t aSource)
 {
   AUTO_PROFILER_LABEL("nsNavBookmarks::RemoveFolderChilder", OTHER);
 
   NS_ENSURE_ARG_MIN(aFolderId, 1);
-  int64_t rootId;
+  int64_t rootId = -1;
   nsresult rv = GetPlacesRoot(&rootId);
   NS_ENSURE_SUCCESS(rv, rv);
   NS_ENSURE_ARG(aFolderId != rootId);
 
   BookmarkData folder;
   rv = FetchItemInfo(aFolderId, folder);
   NS_ENSURE_SUCCESS(rv, rv);
   NS_ENSURE_ARG(folder.type == TYPE_FOLDER);
@@ -1262,19 +1254,17 @@ nsNavBookmarks::RemoveFolderChildren(int
         "WHERE b.id ISNULL)"));
   NS_ENSURE_SUCCESS(rv, rv);
 
   // Set the lastModified date.
   rv = SetItemDateInternal(LAST_MODIFIED, syncChangeDelta, folder.id,
                            RoundedPRNow());
   NS_ENSURE_SUCCESS(rv, rv);
 
-  int64_t tagsRootId;
-  rv = GetTagsFolder(&tagsRootId);
-  NS_ENSURE_SUCCESS(rv, rv);
+  int64_t tagsRootId = TagsRootId();
 
   if (syncChangeDelta) {
     nsTArray<TombstoneData> tombstones(folderChildrenArray.Length());
     PRTime dateRemoved = RoundedPRNow();
 
     for (uint32_t i = 0; i < folderChildrenArray.Length(); ++i) {
       BookmarkData& child = folderChildrenArray[i];
       if (NeedsTombstone(child)) {
@@ -1503,19 +1493,17 @@ nsNavBookmarks::MoveItem(int64_t aItemId
 
     // Mark all affected separators as changed
     rv = AdjustSeparatorsSyncCounter(bookmark.parentId, bookmark.position, syncChangeDelta);
     NS_ENSURE_SUCCESS(rv, rv);
     rv = AdjustSeparatorsSyncCounter(aNewParent, newIndex, syncChangeDelta);
     NS_ENSURE_SUCCESS(rv, rv);
   }
 
-  int64_t tagsRootId;
-  rv = GetTagsFolder(&tagsRootId);
-  NS_ENSURE_SUCCESS(rv, rv);
+  int64_t tagsRootId = TagsRootId();
   bool isChangingTagFolder = bookmark.parentId == tagsRootId;
   if (isChangingTagFolder) {
     // Moving a tag folder out of the tags root untags all its bookmarks. This
     // is an odd case, but the tagging service adds an observer to handle it,
     // so we bump the change counter for each untagged item for consistency.
     rv = AddSyncChangesForBookmarksInFolder(bookmark.id, syncChangeDelta);
     NS_ENSURE_SUCCESS(rv, rv);
   }
@@ -1661,19 +1649,17 @@ NS_IMETHODIMP
 nsNavBookmarks::SetItemDateAdded(int64_t aItemId, PRTime aDateAdded,
                                  uint16_t aSource)
 {
   NS_ENSURE_ARG_MIN(aItemId, 1);
 
   BookmarkData bookmark;
   nsresult rv = FetchItemInfo(aItemId, bookmark);
   NS_ENSURE_SUCCESS(rv, rv);
-  int64_t tagsRootId;
-  rv = GetTagsFolder(&tagsRootId);
-  NS_ENSURE_SUCCESS(rv, rv);
+  int64_t tagsRootId = TagsRootId();
   bool isTagging = bookmark.grandParentId == tagsRootId;
   int64_t syncChangeDelta = DetermineSyncChangeDelta(aSource);
 
   // Round here so that we notify with the right value.
   bookmark.dateAdded = RoundToMilliseconds(aDateAdded);
 
   if (isTagging) {
     // If we're changing a tag, bump the change counter for all tagged
@@ -1734,19 +1720,17 @@ nsNavBookmarks::SetItemLastModified(int6
                                     uint16_t aSource)
 {
   NS_ENSURE_ARG_MIN(aItemId, 1);
 
   BookmarkData bookmark;
   nsresult rv = FetchItemInfo(aItemId, bookmark);
   NS_ENSURE_SUCCESS(rv, rv);
 
-  int64_t tagsRootId;
-  rv = GetTagsFolder(&tagsRootId);
-  NS_ENSURE_SUCCESS(rv, rv);
+  int64_t tagsRootId = TagsRootId();
   bool isTagging = bookmark.grandParentId == tagsRootId;
   int64_t syncChangeDelta = DetermineSyncChangeDelta(aSource);
 
   // Round here so that we notify with the right value.
   bookmark.lastModified = RoundToMilliseconds(aLastModified);
 
   if (isTagging) {
     // If we're changing a tag, bump the change counter for all tagged
@@ -2006,19 +1990,17 @@ nsNavBookmarks::SetItemTitle(int64_t aIt
                              uint16_t aSource)
 {
   NS_ENSURE_ARG_MIN(aItemId, 1);
 
   BookmarkData bookmark;
   nsresult rv = FetchItemInfo(aItemId, bookmark);
   NS_ENSURE_SUCCESS(rv, rv);
 
-  int64_t tagsRootId;
-  rv = GetTagsFolder(&tagsRootId);
-  NS_ENSURE_SUCCESS(rv, rv);
+  int64_t tagsRootId = TagsRootId();
   bool isChangingTagFolder = bookmark.parentId == tagsRootId;
   int64_t syncChangeDelta = DetermineSyncChangeDelta(aSource);
 
   nsAutoCString title;
   TruncateTitle(aTitle, title);
 
   if (isChangingTagFolder) {
     // If we're changing the title of a tag folder, bump the change counter
@@ -2516,19 +2498,17 @@ nsNavBookmarks::ChangeBookmarkURI(int64_
 
   BookmarkData bookmark;
   nsresult rv = FetchItemInfo(aBookmarkId, bookmark);
   NS_ENSURE_SUCCESS(rv, rv);
   NS_ENSURE_ARG(bookmark.type == TYPE_BOOKMARK);
 
   mozStorageTransaction transaction(mDB->MainConn(), false);
 
-  int64_t tagsRootId;
-  rv = GetTagsFolder(&tagsRootId);
-  NS_ENSURE_SUCCESS(rv, rv);
+  int64_t tagsRootId = TagsRootId();
   bool isTagging = bookmark.grandParentId == tagsRootId;
   int64_t syncChangeDelta = DetermineSyncChangeDelta(aSource);
 
   nsNavHistory* history = nsNavHistory::GetHistoryService();
   NS_ENSURE_TRUE(history, NS_ERROR_OUT_OF_MEMORY);
   int64_t newPlaceId;
   nsAutoCString newPlaceGuid;
   rv = history->GetOrCreateIdForPage(aNewURI, &newPlaceId, newPlaceGuid);
@@ -2633,20 +2613,18 @@ nsNavBookmarks::GetBookmarkIdsForURITArr
     "JOIN moz_bookmarks t on t.id = b.parent "
     "WHERE b.fk = (SELECT id FROM moz_places WHERE url_hash = hash(:page_url) AND url = :page_url) AND "
     "t.parent IS NOT :tags_root "
     "ORDER BY b.lastModified DESC, b.id DESC "
   );
   NS_ENSURE_STATE(stmt);
   mozStorageStatementScoper scoper(stmt);
 
-  int64_t tagsRootId;
-  nsresult rv = GetTagsFolder(&tagsRootId);
-  NS_ENSURE_SUCCESS(rv, rv);
-  rv = URIBinder::Bind(stmt, NS_LITERAL_CSTRING("page_url"), aURI);
+  int64_t tagsRootId = TagsRootId();
+  nsresult rv = URIBinder::Bind(stmt, NS_LITERAL_CSTRING("page_url"), aURI);
   NS_ENSURE_SUCCESS(rv, rv);
   rv = stmt->BindInt64ByName(NS_LITERAL_CSTRING("tags_root"), tagsRootId);
   NS_ENSURE_SUCCESS(rv, rv);
 
   bool more;
   while (NS_SUCCEEDED((rv = stmt->ExecuteStep(&more))) && more) {
     int64_t bookmarkId;
     rv = stmt->GetInt64(0, &bookmarkId);
@@ -2676,19 +2654,17 @@ nsNavBookmarks::GetBookmarksForURI(nsIUR
     "ORDER BY b.lastModified DESC, b.id DESC "
   );
   NS_ENSURE_STATE(stmt);
   mozStorageStatementScoper scoper(stmt);
 
   nsresult rv = URIBinder::Bind(stmt, NS_LITERAL_CSTRING("page_url"), aURI);
   NS_ENSURE_SUCCESS(rv, rv);
 
-  int64_t tagsRootId;
-  rv = GetTagsFolder(&tagsRootId);
-  NS_ENSURE_SUCCESS(rv, rv);
+  int64_t tagsRootId = TagsRootId();
 
   bool more;
   nsAutoString tags;
   while (NS_SUCCEEDED((rv = stmt->ExecuteStep(&more))) && more) {
     // Skip tags.
     int64_t grandParentId;
     nsresult rv = stmt->GetInt64(5, &grandParentId);
     NS_ENSURE_SUCCESS(rv, rv);
--- a/toolkit/components/places/nsNavBookmarks.h
+++ b/toolkit/components/places/nsNavBookmarks.h
@@ -313,18 +313,24 @@ private:
    * This is an handle to the Places database.
    */
   RefPtr<mozilla::places::Database> mDB;
 
   int32_t mItemCount;
 
   nsMaybeWeakPtrArray<nsINavBookmarkObserver> mObservers;
 
+  int64_t TagsRootId() {
+    nsresult rv = EnsureRoots();
+    NS_ENSURE_SUCCESS(rv, -1);
+    return mTagsRoot;
+  }
+
   // These are lazy loaded, so never access them directly, always use the
-  // XPIDL getters.
+  // XPIDL getters or TagsRootId().
   int64_t mRoot;
   int64_t mMenuRoot;
   int64_t mTagsRoot;
   int64_t mUnfiledRoot;
   int64_t mToolbarRoot;
   int64_t mMobileRoot;
 
   inline bool IsRoot(int64_t aFolderId) {
--- a/toolkit/components/places/nsNavHistoryQuery.cpp
+++ b/toolkit/components/places/nsNavHistoryQuery.cpp
@@ -203,17 +203,17 @@ namespace PlacesFolderConversion {
    *        query string, but could really be anything.
    * @param aFolderID
    *        The folder ID to convert to the proper named constant.
    */
   inline nsresult AppendFolder(nsCString &aQuery, int64_t aFolderID)
   {
     nsNavBookmarks *bs = nsNavBookmarks::GetBookmarksService();
     NS_ENSURE_STATE(bs);
-    int64_t folderID;
+    int64_t folderID = -1;
 
     if (NS_SUCCEEDED(bs->GetPlacesRoot(&folderID)) &&
         aFolderID == folderID) {
       aQuery.AppendLiteral(PLACES_ROOT_FOLDER);
     }
     else if (NS_SUCCEEDED(bs->GetBookmarksMenuFolder(&folderID)) &&
              aFolderID == folderID) {
       aQuery.AppendLiteral(BOOKMARKS_MENU_FOLDER);
@@ -1596,17 +1596,17 @@ SetQueryKeyBool(const nsCString& aValue,
   } else {
     NS_WARNING("Invalid boolean key value in query string.");
   }
 }
 void // static
 SetOptionsKeyBool(const nsCString& aValue, nsINavHistoryQueryOptions* aOptions,
                  BoolOptionsSetter setter)
 {
-  bool value;
+  bool value = false;
   nsresult rv = ParseQueryBooleanString(aValue, &value);
   if (NS_SUCCEEDED(rv)) {
     rv = (aOptions->*setter)(value);
     if (NS_FAILED(rv)) {
       NS_WARNING("Error setting boolean key value");
     }
   } else {
     NS_WARNING("Invalid boolean key value in query string.");