]> git.sesse.net Git - vlc/blobdiff - modules/access/dvb/scan.c
dvb_scan: fix memleak.
[vlc] / modules / access / dvb / scan.c
index fd69202ed2cdff73becf0b8da09cdd5fbb2c4a73..92655cdc719d6b15be8031d590f51f85e4acb83a 100644 (file)
@@ -165,8 +165,6 @@ static int ScanDvbSNextFast( scan_t *p_scan, scan_configuration_t *p_cfg, double
     /* if there are no transponders in mem, laod from config file */
     if( !*pi_count )
     {
-        scan_dvbs_transponder_t *p_transponders = malloc( sizeof( scan_dvbs_transponder_t ) );
-
         DIR *p_dir;
 
         char *psz_dir = NULL;
@@ -223,6 +221,7 @@ static int ScanDvbSNextFast( scan_t *p_scan, scan_configuration_t *p_cfg, double
         /* parse file */
         if( f )
         {
+            scan_dvbs_transponder_t *p_transponders = malloc( sizeof( scan_dvbs_transponder_t ) );
             char type;
             char psz_fec[3];
 
@@ -256,6 +255,7 @@ static int ScanDvbSNextFast( scan_t *p_scan, scan_configuration_t *p_cfg, double
             msg_Dbg( p_scan->p_obj, "parsed %d transponders from config", *pi_count);
 
             fclose( f );
+            p_scan->parameter.sat_info.p_transponders = p_transponders;
         }
         else
         {
@@ -266,24 +266,22 @@ static int ScanDvbSNextFast( scan_t *p_scan, scan_configuration_t *p_cfg, double
         }
         free( p_scan->parameter.sat_info.psz_name );
         free( p_scan->parameter.sat_info.psz_path );
-
-        p_scan->parameter.sat_info.p_transponders = p_transponders;
     }
 
     if( p_scan->i_index < *pi_count )
     {
         /* setup params for scan */
-        p_cfg->i_bandwidth = p_scan->parameter.sat_info.p_transponders[p_scan->i_index].i_symbol_rate / 1000;
+        p_cfg->i_symbol_rate = p_scan->parameter.sat_info.p_transponders[p_scan->i_index].i_symbol_rate / 1000;
         p_cfg->i_frequency = p_scan->parameter.sat_info.p_transponders[p_scan->i_index].i_frequency;
         p_cfg->i_fec = p_scan->parameter.sat_info.p_transponders[p_scan->i_index].i_fec;
         p_cfg->c_polarization = p_scan->parameter.sat_info.p_transponders[p_scan->i_index].c_polarization;
 
         msg_Dbg( p_scan->p_obj,
-                 "transponder [%d/%d]: frequency=%d, symbolrate=%d, fec=%d, polarization=%c",
+                 "transponder [%"PRId64"/%d]: frequency=%d, symbolrate=%d, fec=%d, polarization=%c",
                  p_scan->i_index + 1,
                  *pi_count,
                  p_cfg->i_frequency,
-                 p_cfg->i_bandwidth,
+                 p_cfg->i_symbol_rate,
                  p_cfg->i_fec,
                  p_cfg->c_polarization );
 
@@ -486,12 +484,12 @@ int scan_Next( scan_t *p_scan, scan_configuration_t *p_cfg )
             i_service++;
     }
 
-    if( asprintf( &psz_text, _("%.1f MHz (%d services)"), 
-                  (double)p_cfg->i_frequency / 1000000, i_service ) >= 0 )
-    {
-        const mtime_t i_eta = f_position > 0.005 ? (mdate() - p_scan->i_time_start) * ( 1.0 / f_position - 1.0 ) : -1;
-        char psz_eta[MSTRTIME_MAX_SIZE];
+    const mtime_t i_eta = f_position > 0.005 ? (mdate() - p_scan->i_time_start) * ( 1.0 / f_position - 1.0 ) : -1;
+    char psz_eta[MSTRTIME_MAX_SIZE];
 
+    if( asprintf( &psz_text, _("%.1f MHz (%d services)\n~%s remaining"),
+                  (double)p_cfg->i_frequency / 1000000, i_service, secstotimestr( psz_eta, i_eta/1000000 ) ) >= 0 )
+    {
         if( i_eta >= 0 )
             msg_Info( p_scan->p_obj, "Scan ETA %s | %f", secstotimestr( psz_eta, i_eta/1000000 ), f_position * 100 );