mirror of https://github.com/YosysHQ/yosys.git
38 lines
1.2 KiB
Diff
38 lines
1.2 KiB
Diff
|
--- System.cc
|
||
|
+++ System.cc
|
||
|
@@ -43,7 +43,7 @@ static inline int memReadStat(int field)
|
||
|
pid_t pid = getpid();
|
||
|
int value;
|
||
|
|
||
|
- sprintf(name, "/proc/%d/statm", pid);
|
||
|
+ snprintf(name, 256, "/proc/%d/statm", pid);
|
||
|
FILE* in = fopen(name, "rb");
|
||
|
if (in == NULL) return 0;
|
||
|
|
||
|
@@ -60,7 +60,7 @@ static inline int memReadPeak(void)
|
||
|
char name[256];
|
||
|
pid_t pid = getpid();
|
||
|
|
||
|
- sprintf(name, "/proc/%d/status", pid);
|
||
|
+ snprintf(name, 256, "/proc/%d/status", pid);
|
||
|
FILE* in = fopen(name, "rb");
|
||
|
if (in == NULL) return 0;
|
||
|
|
||
|
--- Vec.h
|
||
|
+++ Vec.h
|
||
|
@@ -100,7 +100,13 @@ void vec<T,_Size>::capacity(Size min_cap) {
|
||
|
Size add = max((min_cap - cap + 1) & ~1, ((cap >> 1) + 2) & ~1); // NOTE: grow by approximately 3/2
|
||
|
const Size size_max = std::numeric_limits<Size>::max();
|
||
|
if ( ((size_max <= std::numeric_limits<int>::max()) && (add > size_max - cap))
|
||
|
- || (((data = (T*)::realloc(data, (cap += add) * sizeof(T))) == NULL) && errno == ENOMEM) )
|
||
|
+ || (
|
||
|
+#ifdef _DEFAULT_SOURCE
|
||
|
+ ((data = (T*)::reallocarray(data, (cap += add), sizeof(T))) == NULL)
|
||
|
+#else
|
||
|
+ ((data = (T*)::realloc(data, (cap += add) * sizeof(T))) == NULL)
|
||
|
+#endif
|
||
|
+ && errno == ENOMEM) )
|
||
|
throw OutOfMemoryException();
|
||
|
}
|
||
|
|