lib: convert two "iterator copy strings" into references.
authorDavid Bremner <david@tethera.net>
Fri, 2 Jan 2015 16:18:42 +0000 (17:18 +0100)
committerDavid Bremner <david@tethera.net>
Fri, 2 Jan 2015 16:18:42 +0000 (17:18 +0100)
Apparently this is a supported and even idiomatic way of keeping a
temporary object (e.g. like that returned from an operator
dereference) alive.

lib/message.cc

index bacb4d46a0c1aa336a91e3b76b65097b1b1884c5..956a70a9572f861d5ba5aadc1d4154f15794e398 100644 (file)
@@ -283,7 +283,7 @@ _notmuch_message_get_term (notmuch_message_t *message,
     if (i == end)
        return NULL;
 
-    std::string term = *i;
+    const std::string &term = *i;
     if (strncmp (term.c_str(), prefix, prefix_len))
        return NULL;
 
@@ -641,7 +641,7 @@ _notmuch_message_add_directory_terms (void *ctx, notmuch_message_t *message)
        unsigned int directory_id;
        const char *direntry, *directory;
        char *colon;
-       const std::string term = *i;
+       const std::string &term = *i;
 
        /* Terminate loop at first term without desired prefix. */
        if (strncmp (term.c_str (), direntry_prefix, direntry_prefix_len))