Re: [PATCH] don't store temporary value returned from c_str()
authorKim Minh Kaplan <kimminh.kaplan+nomuch@afnic.fr>
Tue, 30 Apr 2013 09:44:01 +0000 (09:44 +0000)
committerW. Trevor King <wking@tremily.us>
Fri, 7 Nov 2014 17:54:32 +0000 (09:54 -0800)
0f/7f706e59aa9eb766de0ad9037092fbef22da3c [new file with mode: 0644]

diff --git a/0f/7f706e59aa9eb766de0ad9037092fbef22da3c b/0f/7f706e59aa9eb766de0ad9037092fbef22da3c
new file mode 100644 (file)
index 0000000..7e78d85
--- /dev/null
@@ -0,0 +1,108 @@
+Return-Path: <kimminh.kaplan+nomuch@afnic.fr>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+       by olra.theworths.org (Postfix) with ESMTP id BFA4A431FB6\r
+       for <notmuch@notmuchmail.org>; Tue, 30 Apr 2013 02:44:38 -0700 (PDT)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 0\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none]\r
+       autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+       with ESMTP id uK63sFi3qoto for <notmuch@notmuchmail.org>;\r
+       Tue, 30 Apr 2013 02:44:33 -0700 (PDT)\r
+Received: from mx4.nic.fr (mx4.nic.fr [192.134.4.12])\r
+       by olra.theworths.org (Postfix) with ESMTP id 37949431FAF\r
+       for <notmuch@notmuchmail.org>; Tue, 30 Apr 2013 02:44:33 -0700 (PDT)\r
+Received: from mx4.nic.fr (localhost [127.0.0.1])\r
+       by mx4.nic.fr (Postfix) with SMTP id 46CE3280668;\r
+       Tue, 30 Apr 2013 11:44:31 +0200 (CEST)\r
+Received: from relay2.nic.fr (relay2.nic.fr [192.134.4.163])\r
+       by mx4.nic.fr (Postfix) with ESMTP id 42142280617;\r
+       Tue, 30 Apr 2013 11:44:31 +0200 (CEST)\r
+Received: from kaki.tech.prive.nic.fr (kaki.tech.prive.sqy.nic.fr\r
+       [10.10.86.114]) by relay2.nic.fr (Postfix) with ESMTP id 405ECB38055;\r
+       Tue, 30 Apr 2013 11:44:01 +0200 (CEST)\r
+Received: by kaki.tech.prive.nic.fr (Postfix, from userid 1000)\r
+       id 245663F8139; Tue, 30 Apr 2013 09:44:01 +0000 (UTC)\r
+From: Kim Minh Kaplan <kimminh.kaplan+nomuch@afnic.fr>\r
+To: Vladimir Marek <vlmarek@volny.cz>\r
+Subject: Re: [PATCH] don't store temporary value returned from c_str()\r
+References: <1366405933-17223-1-git-send-email-Vladimir.Marek@oracle.com>\r
+       <m2sj2cjp2b.fsf@guru.guru-group.fi>\r
+       <20130427101134.GI10394@pub.cz.oracle.com>\r
+       <8761z4h7ih.fsf@kaki.tech.prive.nic.fr>\r
+       <20130430084852.GA19599@pub.cz.oracle.com>\r
+Date: Tue, 30 Apr 2013 09:44:01 +0000\r
+In-Reply-To: <20130430084852.GA19599@pub.cz.oracle.com> (Vladimir Marek's\r
+       message of "Tue, 30 Apr 2013 10:48:52 +0200")\r
+Message-ID: <87ehdsfj4u.fsf@kaki.tech.prive.nic.fr>\r
+User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.4 (gnu/linux)\r
+MIME-Version: 1.0\r
+Content-Type: text/plain; charset=utf-8\r
+Content-Transfer-Encoding: quoted-printable\r
+Cc: Tomi Ollila <tomi.ollila@iki.fi>, notmuch@notmuchmail.org\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+       <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Tue, 30 Apr 2013 09:44:38 -0000\r
+\r
+Vladimir Marek=C2=A0:\r
+\r
+> Thank you, I found it eventually too. But I wrote little test program\r
+> (attached) which confused me. I haven't had much time to take a look\r
+> into it since weekend.\r
+>\r
+> The idea is to have temporary object where I can detect whether\r
+> destructor was called.\r
+>\r
+> I thought that\r
+>\r
+> printf ("%s\n", s.c_str());\r
+> will print "test"\r
+>\r
+> and\r
+>\r
+> x=3Ds.c_str();\r
+> printf ("%s\n", x);\r
+>\r
+> will print "destroyed"\r
+>\r
+> On my machine both prints "destroyed".\r
+\r
+You have to somehow instantiate a temporary object, using a function\r
+call for example.\r
+\r
+    #include <string.h>\r
+    #include <stdio.h>\r
+    struct example {\r
+      char data[10];\r
+      char *c_str() { return data; }\r
+     example() { strcpy(data, "test"); }\r
+      ~example() { strcpy(data, "destroyed"); }\r
+    };\r
+    example foo()\r
+    {\r
+      example res;\r
+      return res;\r
+    }\r
+    main()\r
+    {\r
+      printf("%s\n", foo().c_str());\r
+      char *x =3D foo().c_str();\r
+      printf("%s\n", x);\r
+    }\r
+\r
+Kim Minh.\r