From 849832a951d6c93e9c7c2fede2466c14d8c2e136 Mon Sep 17 00:00:00 2001 From: Waylander <62927863+Faholan@users.noreply.github.com> Date: Thu, 4 Sep 2025 00:12:26 +0200 Subject: [PATCH] Fix an undefined behaviour and a memory leak (#289) * Use a unique_ptr to avoid leaks * Use memmove instead of memcopy As both arguments can overlap, use memmove instead of memcopy * Fix code style issues --- search/Sta.cc | 1 + util/gzstream.hh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/search/Sta.cc b/search/Sta.cc index a766d927..f384a820 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -2963,6 +2963,7 @@ Sta::netSlack(const Net *net, slack = pin_slack; } } + delete pin_iter; return slack; } diff --git a/util/gzstream.hh b/util/gzstream.hh index ec2ded6c..26e85352 100644 --- a/util/gzstream.hh +++ b/util/gzstream.hh @@ -117,7 +117,7 @@ public: int n_putback = gptr() - eback(); if ( n_putback > 4) n_putback = 4; - memcpy( buffer + (4 - n_putback), gptr() - n_putback, n_putback); + memmove( buffer + (4 - n_putback), gptr() - n_putback, n_putback); int num = gzread( file, buffer+4, bufferSize-4); if (num <= 0) // ERROR or EOF