From: Chang.H.S Date: Wed, 4 Jul 2012 09:17:17 +0000 (+0900) Subject: db.cpp : 'Load Bouquets' fixed for line have more than 256 chracters. X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=commitdiff_plain;h=01dff0278ed0eeb8cee776c8ef9d6fcf0d6229fb;hp=d619c613c873c6c242022cdae8d0db4b336e5027 db.cpp : 'Load Bouquets' fixed for line have more than 256 chracters. --- 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()); }