<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle22
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hey Marshall,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Just following up on this.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">Steven<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Deepak Agrawal (EDGE) <deepakag@microsoft.com> <br>
<b>Sent:</b> Friday, June 28, 2019 10:48 AM<br>
<b>To:</b> Steven Lengieza <Steven.Lengieza@microsoft.com>; Marshall Clow <mclow.lists@gmail.com><br>
<b>Cc:</b> libcxx-dev@lists.llvm.org<br>
<b>Subject:</b> RE: [libcxx-dev] locale decimal point<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We are at:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">CLANG_REVISION = '67510fac36d27b2e22c7cd955fc167136b737b93'<o:p></o:p></p>
<p class="MsoNormal">CLANG_SVN_REVISION = '361212'<o:p></o:p></p>
<p class="MsoNormal">CLANG_SUB_REVISION = 2<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">'libcxx_revision': '5938e0582bac570a41edb3d6a2217c299adc1bc6',<o:p></o:p></p>
<p class="MsoNormal">'libcxxabi_revision': '0d529660e32d77d9111912d73f2c74fc5fa2a858',<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Steven Lengieza <<a href="mailto:Steven.Lengieza@microsoft.com">Steven.Lengieza@microsoft.com</a>>
<br>
<b>Sent:</b> Friday, June 28, 2019 9:23 AM<br>
<b>To:</b> Marshall Clow <<a href="mailto:mclow.lists@gmail.com">mclow.lists@gmail.com</a>>; Deepak Agrawal (EDGE) <<a href="mailto:deepakag@microsoft.com">deepakag@microsoft.com</a>><br>
<b>Cc:</b> <a href="mailto:libcxx-dev@lists.llvm.org">libcxx-dev@lists.llvm.org</a><br>
<b>Subject:</b> RE: [libcxx-dev] locale decimal point<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m on Windows 10 and I have “#include <locale>” at the top of my file.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><a id="OWAAME051DCDA649441E58884933909E3D85A" href="mailto:deepakag@microsoft.com"><span style="font-family:"Calibri",sans-serif;text-decoration:none">@Deepak Agrawal (EDGE)</span></a> What version of clang are we using?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">For more info on the crash. It occurs in the function “<i>checked_string_to_char_convert(char& dest, const char* ptr, locale_t _loc)</i>” and the exact line is “<i>if(*ptr == ‘\0’)</i>”. In the debugger “ptr” is just junk. The line in our
 code that it crashes on is “<i>std::locale my_locale(“”)</i>”.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">Steven<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><b>From:</b> Marshall Clow <<a href="mailto:mclow.lists@gmail.com">mclow.lists@gmail.com</a>>
<br>
<b>Sent:</b> Friday, June 28, 2019 7:51 AM<br>
<b>To:</b> Steven Lengieza <<a href="mailto:Steven.Lengieza@microsoft.com">Steven.Lengieza@microsoft.com</a>><br>
<b>Cc:</b> <a href="mailto:libcxx-dev@lists.llvm.org">libcxx-dev@lists.llvm.org</a>; Deepak Agrawal (EDGE) <<a href="mailto:deepakag@microsoft.com">deepakag@microsoft.com</a>><br>
<b>Subject:</b> Re: [libcxx-dev] locale decimal point<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<p class="MsoNormal">On Fri, Jun 28, 2019 at 7:45 AM Steven Lengieza via libcxx-dev <<a href="mailto:libcxx-dev@lists.llvm.org">libcxx-dev@lists.llvm.org</a>> wrote:<br>
Hi,<br>
<br>
I am using the following lines of code to get a locale-specific decimal point however, it is causing a crash. I am unable to find any libc++ specific documentation for using std::locale but according to the STL an empty string should always be a valid locale.
 Does this indicate a bug in the libc++ implementation or are we doing something wrong?<br>
<br>
 <br>
      std::locale my_locale("");<br>
      const std::moneypunct<char>& mp =<br>
          std::use_facet<std::moneypunct<char>>(my_locale);<br>
      text += mp.decimal_point();<o:p></o:p></p>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">When I paste that into a program, add the correct includes, declare text as a string, it works fine. (and prints '.')<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">What version of clang are you using, what system, what C library, etc?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">#include <locale><br>
#include <iostream><br>
#include <string><br>
<br>
int main () { <br>
      std::locale my_locale("");<br>
      const std::moneypunct<char>& mp =<br>
          std::use_facet<std::moneypunct<char>>(my_locale);<br>
      std::string text;<br>
      text += mp.decimal_point();<br>
std::cout << "'" << text << "'" << std::endl;<br>
}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">-- Marshall<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
</body>
</html>