]> granicus.if.org Git - strace/commitdiff
syscall.c: introduce reallocate_vec function
authorDmitry V. Levin <ldv@altlinux.org>
Sat, 12 Nov 2016 00:36:01 +0000 (00:36 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Sat, 12 Nov 2016 21:29:58 +0000 (21:29 +0000)
This might be needed later to implement syscall fault injection.

* syscall.c (reallocate_vec): New function.
(reallocate_qual): Use it.

syscall.c

index f69132a9c88a382b7f566268f92c4f87145460e5..1f621f5d30c70a190f4f3ef9248aa7f34da89e12 100644 (file)
--- a/syscall.c
+++ b/syscall.c
@@ -390,15 +390,22 @@ static const struct qual_options {
 };
 
 static void
-reallocate_qual(const unsigned int n)
+reallocate_vec(void **vec, unsigned int old_nmemb,
+              size_t size, unsigned int new_nmemb)
 {
-       unsigned p;
-       qualbits_t *qp;
-       for (p = 0; p < SUPPORTED_PERSONALITIES; p++) {
-               qp = qual_vec[p] = xreallocarray(qual_vec[p], n,
-                                                sizeof(qualbits_t));
-               memset(&qp[num_quals], 0, (n - num_quals) * sizeof(qualbits_t));
+       unsigned int p;
+
+       for (p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
+               vec[p] = xreallocarray(vec[p], new_nmemb, size);
+               memset(vec[p] + size * old_nmemb, 0,
+                      (new_nmemb - old_nmemb) * size);
        }
+}
+
+static void
+reallocate_qual(const unsigned int n)
+{
+       reallocate_vec((void **) qual_vec, num_quals, sizeof(qualbits_t), n);
        num_quals = n;
 }