<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/3985/">https://reviewboard.asterisk.org/r/3985/</a>
     </td>
    </tr>
   </table>
   <br />




<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.org/static/rb/images/review_request_box_top_bg.ab6f3b1072c9.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Asterisk Developers.</div>
<div>By Jonathan Rose.</div>








<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-24231">ASTERISK-24231</a>


</div>



<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
Asterisk
</div>


<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;">Attempting to use the following CLI command would cause a crash (regardless of whether a realtime database were in any way configured)

realtime destroy (any table) field1 value1

This was due to attempting to create a variable list from a NULL name since we sent an empty va list to a function that creates variable lists from va lists.

I've changed that function to be tolerant of empty va lists and I've changed the ast_realtime_destroy function to go ahead and call the realtime engine destroy functions even if the variable list that it gets back from that function is NULL.</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;">I tested the changes against both a postgres database connected via res_config_pgsql and a mysql database connected via res_config_odbc. Of the two, res_config_odbc appeared to be the more likely source of trouble since it might use the variable list for something other than just iteration. It appears to set a string field to the variable list for whatever reason... in any event, both appeared to work fine and I didn't notice anything out of the ordinary happening due to deallocation or anything.

I went ahead and checked all the other realtime engines to make sure their destroy functions looked like they would be compatible with NULL variable lists as well and they all checked out... they just add entries by iterating along the list and if it's NULL it just won't enter the loop in each case.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>/branches/12/main/config.c <span style="color: grey">(422869)</span></li>

</ul>

<p><a href="https://reviewboard.asterisk.org/r/3985/diff/" style="margin-left: 3em;">View Diff</a></p>







  </td>
 </tr>
</table>




  </div>
 </body>
</html>