From e18a303d1c17acd30c21162826c554ee770cf35a Mon Sep 17 00:00:00 2001
From: AlexeyAB <alexeyab84@gmail.com>
Date: Sat, 21 Apr 2018 12:19:58 +0000
Subject: [PATCH] Fixed utils.c for short lines.

---
 src/network.c  |    4 ++--
 src/parser.c   |    4 ++--
 src/detector.c |    9 ++++++---
 src/utils.c    |    7 +++++--
 4 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/detector.c b/src/detector.c
index 407c8be..86f6afc 100644
--- a/src/detector.c
+++ b/src/detector.c
@@ -1048,7 +1048,8 @@
     while(1){
         if(filename){
             strncpy(input, filename, 256);
-			if (input[strlen(input) - 1] == 0x0d) input[strlen(input) - 1] = 0;
+			if(strlen(input) > 0)
+				if (input[strlen(input) - 1] == 0x0d) input[strlen(input) - 1] = 0;
         } else {
             printf("Enter Image Path: ");
             fflush(stdout);
@@ -1146,7 +1147,8 @@
     char *cfg = argv[4];
     char *weights = (argc > 5) ? argv[5] : 0;
 	if(weights)
-		if (weights[strlen(weights) - 1] == 0x0d) weights[strlen(weights) - 1] = 0;
+		if(strlen(weights) > 0)
+			if (weights[strlen(weights) - 1] == 0x0d) weights[strlen(weights) - 1] = 0;
     char *filename = (argc > 6) ? argv[6]: 0;
     if(0==strcmp(argv[2], "test")) test_detector(datacfg, cfg, weights, filename, thresh, hier_thresh, dont_show);
     else if(0==strcmp(argv[2], "train")) train_detector(datacfg, cfg, weights, gpus, ngpus, clear, dont_show);
@@ -1160,7 +1162,8 @@
         char *name_list = option_find_str(options, "names", "data/names.list");
         char **names = get_labels(name_list);
 		if(filename)
-			if (filename[strlen(filename) - 1] == 0x0d) filename[strlen(filename) - 1] = 0;
+			if(strlen(filename) > 0)
+				if (filename[strlen(filename) - 1] == 0x0d) filename[strlen(filename) - 1] = 0;
         demo(cfg, weights, thresh, hier_thresh, cam_index, filename, names, classes, frame_skip, prefix, out_filename,
 			http_stream_port, dont_show);
     }
diff --git a/src/network.c b/src/network.c
index 03ad5eb..ce6d28a 100644
--- a/src/network.c
+++ b/src/network.c
@@ -800,14 +800,14 @@
 				int f;
 				for (f = 0; f < l->n; ++f)
 				{
-					l->biases[f] = l->biases[f] - l->scales[f] * l->rolling_mean[f] / (sqrtf(l->rolling_variance[f]) + .000001f);
+					l->biases[f] = l->biases[f] - (double)l->scales[f] * l->rolling_mean[f] / (sqrt((double)l->rolling_variance[f]) + .000001f);
 
 					const size_t filter_size = l->size*l->size*l->c;
 					int i;
 					for (i = 0; i < filter_size; ++i) {
 						int w_index = f*filter_size + i;
 
-						l->weights[w_index] = l->weights[w_index] * l->scales[f] / (sqrtf(l->rolling_variance[f]) + .000001f);
+						l->weights[w_index] = (double)l->weights[w_index] * l->scales[f] / (sqrt((double)l->rolling_variance[f]) + .000001f);
 					}
 				}
 
diff --git a/src/parser.c b/src/parser.c
index 319235a..568e540 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -291,7 +291,7 @@
 		for (i = 0; i < len; ++i) {
 			if (a[i] == ',') ++n;
 		}
-		for (i = 0; i < n; ++i) {
+		for (i = 0; i < n && i < total*2; ++i) {
 			float bias = atof(a);
 			l.biases[i] = bias;
 			a = strchr(a, ',') + 1;
@@ -344,7 +344,7 @@
         for(i = 0; i < len; ++i){
             if (a[i] == ',') ++n;
         }
-        for(i = 0; i < n; ++i){
+        for(i = 0; i < n && i < num*2; ++i){
             float bias = atof(a);
             l.biases[i] = bias;
             a = strchr(a, ',')+1;
diff --git a/src/utils.c b/src/utils.c
index 615d836..8c14fb6 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -297,8 +297,11 @@
         fgets(&line[curr], readsize, fp);
         curr = strlen(line);
     }
-    if(line[curr-2] == 0x0d) line[curr-2] = 0x00;
-    if(line[curr-1] == 0x0a) line[curr-1] = 0x00;
+	if(curr >= 2)
+		if(line[curr-2] == 0x0d) line[curr-2] = 0x00;
+
+	if(curr >= 1)
+		if(line[curr-1] == 0x0a) line[curr-1] = 0x00;
 
     return line;
 }

--
Gitblit v1.10.0