Correct some memory management issues.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
diff --git a/main.c b/main.c
index c8212c7..ccc9341 100644
--- a/main.c
+++ b/main.c
@@ -3448,7 +3448,6 @@ static void hashmeter(int thr_id, struct timeval *diff,
static double local_mhashes_done = 0;
static double rolling = 0;
double local_mhashes = (double)hashes_done / 1000000.0;
- struct cgpu_info *cgpu = thr_info[thr_id].cgpu;
bool showlog = false;
/* Update the last time this thread reported in */
@@ -3464,6 +3463,7 @@ static void hashmeter(int thr_id, struct timeval *diff,
/* So we can call hashmeter from a non worker thread */
if (thr_id >= 0) {
struct thr_info *thr = &thr_info[thr_id];
+ struct cgpu_info *cgpu = thr_info[thr_id].cgpu;
double thread_rolling = 0.0;
int i;
@@ -5207,6 +5207,8 @@ int main (int argc, char *argv[])
init_max_name_len();
handler.sa_handler = &sighandler;
+ handler.sa_flags = 0;
+ sigemptyset(&handler.sa_mask);
sigaction(SIGTERM, &handler, &termhandler);
sigaction(SIGINT, &handler, &inthandler);
@@ -5408,7 +5410,7 @@ int main (int argc, char *argv[])
quit(1, "Failed to malloc userpass");
sprintf(pool->rpc_userpass, "%s:%s", pool->rpc_user, pool->rpc_pass);
} else {
- pool->rpc_user = malloc(strlen(pool->rpc_userpass));
+ pool->rpc_user = malloc(strlen(pool->rpc_userpass) + 1);
if (!pool->rpc_user)
quit(1, "Failed to malloc user");
strcpy(pool->rpc_user, pool->rpc_userpass);