From 46aa1bb1d8661317c2eb7aec7c552467fca6f225 Mon Sep 17 00:00:00 2001 From: Kfir Itzhak Date: Thu, 30 Jun 2011 21:05:55 +0300 Subject: [PATCH] Fixed bug in linked monitor loading code which should fix the crash of a monitor linked to a disabled monitor. --- src/zm_monitor.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/zm_monitor.cpp b/src/zm_monitor.cpp index 5761a4d6e..5bbff9dd4 100644 --- a/src/zm_monitor.cpp +++ b/src/zm_monitor.cpp @@ -1732,9 +1732,9 @@ void Monitor::ReloadLinkedMonitors( const char *p_linked_monitors ) if ( n_link_ids > 0 ) { Debug( 1, "Linking to %d monitors", n_link_ids ); - n_linked_monitors = n_link_ids; - linked_monitors = new MonitorLink *[n_linked_monitors]; - for ( int i = 0; i < n_linked_monitors; i++ ) + linked_monitors = new MonitorLink *[n_link_ids]; + int count = 0; + for ( int i = 0; i < n_link_ids; i++ ) { Debug( 1, "Checking linked monitor %d", link_ids[i] ); @@ -1757,14 +1757,15 @@ void Monitor::ReloadLinkedMonitors( const char *p_linked_monitors ) { MYSQL_ROW dbrow = mysql_fetch_row( result ); Debug( 1, "Linking to monitor %d", link_ids[i] ); - linked_monitors[i] = new MonitorLink( link_ids[i], dbrow[1] ); + linked_monitors[count++] = new MonitorLink( link_ids[i], dbrow[1] ); } else { - Debug( 1, "Can't link to monitor %d, invalid id, function or not enabled", link_ids[i] ); + Warning( "Can't link to monitor %d, invalid id, function or not enabled", link_ids[i] ); } mysql_free_result( result ); } + n_linked_monitors = count; } } }