<html>
<body>
<div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
<table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
<tr>
<td>
This is an automatically generated e-mail. To reply, visit:
<a href="https://reviewboard.asterisk.org/r/2102/">https://reviewboard.asterisk.org/r/2102/</a>
</td>
</tr>
</table>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On September 11th, 2012, 10:30 a.m., <b>Mark Michelson</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
<thead>
<tr>
<th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
<a href="https://reviewboard.asterisk.org/r/2102/diff/1/?file=31161#file31161line1043" style="color: black; font-weight: bold; text-decoration: underline;">/branches/11/configure.ac</a>
<span style="font-weight: normal;">
(Diff revision 1)
</span>
</th>
</tr>
</thead>
<tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
<tr>
<td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
</tr>
</tbody>
<tbody>
<tr>
<th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
<th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1043</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        [AC_LANG_PROGRAM([], [void foo(void) {void bar(void) {}}])],</pre></td>
</tr>
</tbody>
</table>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I'm not sure how relevant this is, but I know that in all places in Asterisk where we use nested functions, we place the "auto" keyword in front of the function. This helps to clear up some compiler errors/warnings on certain versions of GCC.
I'm not sure if your test is purposely leaving off "auto" or if you need to add it here in order to head off false positives.</pre>
</blockquote>
</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">From the GCC docs[1], the "auto" keyword is only needed to declare the function before its definition.
*looking deeper*
Ah; an old GCC bug[2] would report 'no previous prototype' warnings if nested functions are used with the "-Wmissing-prototypes" compiler flag. So if someone 1) used an old version of GCC and 2) enabled both that warning and "-Werror" in the CFLAGS they provide to configure, then we would have a false positive. Okay; I'll make the patch more robust.
[1]: http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html
[2]: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36774</pre>
<br />
<p>- David</p>
<br />
<p>On September 11th, 2012, 11:30 a.m., David Lee wrote:</p>
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
<tr>
<td>
<div>Review request for Asterisk Developers.</div>
<div>By David Lee.</div>
<p style="color: grey;"><i>Updated Sept. 11, 2012, 11:30 a.m.</i></p>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">In order to use nested functions on some versions of GCC (e.g. GCC on OS X), the -fnested-functions flag must be passed to the compiler.
This patch:
* Adds detection logic to ./configure
* Adds AST_NESTED_FUNCTIONS to ./makeopts.in
* Includes AST_NESTED_FUNCTIONS in _ASTCFLAGS</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Compiled on OS X and Ubuntu 12.04.</pre>
</td>
</tr>
</table>
<div style="margin-top: 1.5em;">
<b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-20399">ASTERISK-20399</a>
</div>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>/branches/11/Makefile <span style="color: grey">(372844)</span></li>
<li>/branches/11/configure <span style="color: grey">(UNKNOWN)</span></li>
<li>/branches/11/configure.ac <span style="color: grey">(372844)</span></li>
<li>/branches/11/include/asterisk/autoconfig.h.in <span style="color: grey">(372844)</span></li>
<li>/branches/11/include/asterisk/utils.h <span style="color: grey">(372844)</span></li>
<li>/branches/11/makeopts.in <span style="color: grey">(372844)</span></li>
</ul>
<p><a href="https://reviewboard.asterisk.org/r/2102/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>