<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div> <div class="" id="bloop_sign_1386117451782860032"><br><br><span style="font-family:helvetica,arial;font-size:13px"></span><span></span></div> <br><p style="color:#A0A0A8;">On December 3, 2013 at 4:38:18 AM, Maxim Dounin (<a href="mailto://mdounin@mdounin.ru">mdounin@mdounin.ru</a>) wrote:</p> <div><div><div><div><font color="#1c84fc" face="normal helvetica, sans-serif"><span style="line-height: 22px;"><br></span></font><div><blockquote type="cite" class="clean_bq" style="font-family: helvetica; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"><span><div><div>Hello!<br><br>On Mon, Dec 02, 2013 at 03:44:53PM -0800, Dean Pucsek wrote:<br><br>> Hello,<br>><span class="Apple-converted-space"> </span><br>> While reading through the source code for nginx I came across the following two lines in ngx_config.h <br>><span class="Apple-converted-space"> </span><br>> #define NGX_INT32_LEN   (sizeof("-2147483648") - 1)<br>> #define NGX_INT64_LEN   (sizeof("-9223372036854775808") - 1)<br>><span class="Apple-converted-space"> </span><br>> I was wondering if someone could explain the intention of these<span class="Apple-converted-space"> </span><br>> lines to me because it is not clear.  My understanding is that<span class="Apple-converted-space"> </span><br>> using sizeof() on a string will return the number of characters<span class="Apple-converted-space"> </span><br>> in that string.  Conversely, I get the feeling these lines are<span class="Apple-converted-space"> </span><br>> supposed to somehow act as replacements for INT32_MAX and<span class="Apple-converted-space"> </span><br>> INT64_MAX in stdint.h.<br><br>These macros are used as a maximum length of a string<span class="Apple-converted-space"> </span><br>representation of the relevant types. Note "_LEN", not "_MAX".<br><br>Relevant maximum value for int32_t is NGX_MAX_INT32_VALUE defined<span class="Apple-converted-space"> </span><br>below in the same file.</div></div></span></blockquote></div><p>Noted, sounds like this may be a case of not fully reading ngx_config.h on my part.</p><div><div><blockquote type="cite" class="clean_bq" style="font-family: helvetica; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"><span><div><div><br>> Looking at code where these #define’s are used doesn’t really<span class="Apple-converted-space"> </span><br>> help clarify things either.  For example, in nginx.c there is:<br>><span class="Apple-converted-space"> </span><br>>     var = ngx_alloc(sizeof(NGINX_VAR)<br>>                     + cycle->listening.nelts * (NGX_INT32_LEN + 1) + 2,<br>>                     cycle->log);<br>><span class="Apple-converted-space"> </span><br>> The code clearly allocates memory, but it’s not clear why the<span class="Apple-converted-space"> </span><br>> allocation is a multiple of NGX_INT32_LEN (or why we’re adding<span class="Apple-converted-space"> </span><br>> 1, or 2 for that matter).<br>><span class="Apple-converted-space"> </span><br>> Any direction would be much appreciated.<br><br>This code allocates memory for the "NGINX=x;y;z;\0" string, where<span class="Apple-converted-space"> </span><br>"x", "y", "z" - are string representations of listening sockets.<span class="Apple-converted-space"> </span><br>The "+ 1" is for ";" after each socket. The "+ 2" is for "="<span class="Apple-converted-space"> </span><br>and trailing "\0" (well, it looks like a only "+ 1" is actually<span class="Apple-converted-space"> </span><br>needed here, as sizeof(NGINX_VAR) already includes an extra byte).</div></div></span></blockquote></div><p>I had a suspicion that it was something like that but I didn’t quite get the pieces together.  </p><p><br></p><p>Thanks for the clarification.</p><div><blockquote type="cite" class="clean_bq" style="font-family: helvetica; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"><span><div><div><br><br>--<span class="Apple-converted-space"> </span><br>Maxim Dounin<br>http://nginx.org/en/donation.html<br><br>_______________________________________________<br>nginx-devel mailing list<br>nginx-devel@nginx.org<br>http://mailman.nginx.org/mailman/listinfo/nginx-devel</div></div></span></blockquote></div></div></div><div></div></div><div></div></div><div></div></div><div></div></body></html>