[svn-commits] jpeeler: branch 1.4 r294903 - /branches/1.4/apps/app_voicemail.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Fri Nov 12 14:49:18 CST 2010


Author: jpeeler
Date: Fri Nov 12 14:49:09 2010
New Revision: 294903

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=294903
Log:
Fix regression causing abort in voicemail after opening a mailbox with no mesgs.

In order to be more safe, some error handling code was changed to respect more
error conditions including the potential memory allocation failure for deleted
and heard message tracking introduced in 293004. However, last_message_index
returns -1 for zero messages (perhaps as expected) and was triggering the
stricter error checking. Because last_message_index is only called directly
in one place, just return 0 from open_mailbox (for file based storage) when no
messages are detected unless a real error has occurred.

(closes issue #18240)
Reported by: leobrown
Patches: 
      bug18240.1-6-2.diff.txt uploaded by alecdavis (license 585)
Tested by: pabelanger

Modified:
    branches/1.4/apps/app_voicemail.c

Modified: branches/1.4/apps/app_voicemail.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.4/apps/app_voicemail.c?view=diff&rev=294903&r1=294902&r2=294903
==============================================================================
--- branches/1.4/apps/app_voicemail.c (original)
+++ branches/1.4/apps/app_voicemail.c Fri Nov 12 14:49:09 2010
@@ -1744,6 +1744,7 @@
 		ast_log(LOG_WARNING, "The code expects the old messages to be checked first, fix the code.\n");
 	}
 	if (vm_allocate_dh(vms, vmu, box == 0 ? vms->vmArrayIndex + vms->oldmessages : vms->lastmsg)) {
+		ast_mutex_unlock(&vms->lock);
 		return -1;
 	}
 
@@ -5969,7 +5970,7 @@
 
 	/* for local storage, checks directory for messages up to maxmsg limit */
 	last_msg = last_message_index(vmu, vms->curdir);
-	if (last_msg < 0)
+	if (last_msg < -1)
 		return last_msg;
 	else if (vms->lastmsg != last_msg)
 	{




More information about the svn-commits mailing list