<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-legacy-support.

</pre>
<p><a href="https://github.com/macports/macports-legacy-support/commit/34903cab21ec28af953311ef6b1d2279713808e4">https://github.com/macports/macports-legacy-support/commit/34903cab21ec28af953311ef6b1d2279713808e4</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 34903cab21ec28af953311ef6b1d2279713808e4
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Sat Dec 28 20:37:09 2024 -0800

<span style='display:block; white-space:pre;color:#404040;'>    test_copyfile: Add test for 10.4 compatibility wrappers.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This verifies that the 10.4 alloc/free functions are actually using
</span><span style='display:block; white-space:pre;color:#404040;'>    the new versions, by checking the allocated size.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    TESTED:
</span><span style='display:block; white-space:pre;color:#404040;'>    Passes on all platforms normally.
</span><span style='display:block; white-space:pre;color:#404040;'>    Fails as expected on 10.4 with wrappers disabled.
</span>---
 test/test_copyfile.c | 36 +++++++++++++++++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/test/test_copyfile.c b/test/test_copyfile.c
</span><span style='display:block; white-space:pre;color:#808080;'>index 4ad3521..cf1dcf0 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/test/test_copyfile.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/test/test_copyfile.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -30,6 +30,22 @@
</span> #include <sys/param.h>
 #include <sys/stat.h>
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Set up condition for testing the compatibility wrappers. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if !defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    || __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1050
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define TEST_TIGER 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define TEST_TIGER 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if TEST_TIGER
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Avoid problematic malloc.h by direct declaration of malloc_size(). */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extern size_t malloc_size(const void *ptr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Prototypes in case we build with later SDK */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int copyfile_free(copyfile_state_t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+copyfile_state_t copyfile_init(void);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> #ifndef TEST_TEMP
 #define TEST_TEMP "/dev/null"
 #endif
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -47,7 +63,7 @@ main(int argc, char *argv[])
</span> {
   int verbose = 0, debug = 0;
   char *debugenv;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-  copyfile_state_t state;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  copyfile_state_t state, state_test;
</span>   dummy_ctx_t ctx = {0}, *ctxp;
   pid_t pid = getpid();
   char *name = basename(argv[0]);
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -87,6 +103,24 @@ main(int argc, char *argv[])
</span>     return 1;
   }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Verify that the old allocator is really wrapping the new one. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if TEST_TIGER
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  state_test = copyfile_init();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  if (!state_test) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    perror("copyfile_init() failed");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  if (malloc_size(state_test) != malloc_size(state)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    fprintf(stderr, "copyfile_init() size %d mismatches"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    " copyfile_state_alloc() size %d\n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            (int) malloc_size(state_test), (int) malloc_size(state));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  copyfile_free(state_test);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (void) state_test;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>   /* Check that we can set the context pointer */
   if (copyfile_state_set(state, COPYFILE_STATE_STATUS_CTX, &ctx)) {
     perror("unable to set COPYFILE_STATE_STATUS_CTX");
</pre><pre style='margin:0'>

</pre>