From 01dff0278ed0eeb8cee776c8ef9d6fcf0d6229fb Mon Sep 17 00:00:00 2001 From: "Chang.H.S" Date: Wed, 4 Jul 2012 18:17:17 +0900 Subject: [PATCH 1/1] db.cpp : 'Load Bouquets' fixed for line have more than 256 chracters. --- lib/dvb/db.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) mode change 100644 => 100755 lib/dvb/db.cpp diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp old mode 100644 new mode 100755 index f938cb1..ea0df97 --- a/lib/dvb/db.cpp +++ b/lib/dvb/db.cpp @@ -633,18 +633,18 @@ void eDVBDB::loadBouquet(const char *path) return; } int entries=0; - char line[256]; + size_t linesize = 256; + char *line = (char*)malloc(linesize); bool read_descr=false; eServiceReference *e = NULL; while (1) { - if (!fgets(line, 256, fp)) - break; - line[strlen(line)-1]=0; - if (strlen(line) && line[strlen(line)-1]=='\r') - line[strlen(line)-1]=0; - if (!line[0]) - break; + int len; + if ((len = getline(&line, &linesize, fp)) < 2) break; + /* strip newline */ + line[--len] = 0; + /* strip carriage return (when found) */ + if (line[len - 1] == '\r') line[--len] = 0; if (line[0]=='#') { if (!strncmp(line, "#SERVICE", 8)) @@ -700,6 +700,7 @@ void eDVBDB::loadBouquet(const char *path) continue; } } + free(line); fclose(fp); eDebug("%d entries in Bouquet %s", entries, bouquet_name.c_str()); } -- 2.7.4