<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/616bb9fca16e3313f17c6be640464c043d7643f6">https://github.com/macports/macports-legacy-support/commit/616bb9fca16e3313f17c6be640464c043d7643f6</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 616bb9fca16e3313f17c6be640464c043d7643f6
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Thu Nov 14 16:46:03 2024 -0800
<span style='display:block; white-space:pre;color:#404040;'> sysconf: Cache dlsym() result.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> This avoids repeating the symbol lookup on every call.
</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 tests on all platforms.
</span>---
src/sysconf.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/sysconf.c b/src/sysconf.c
</span><span style='display:block; white-space:pre;color:#808080;'>index 399ca9c..8c196ab 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/sysconf.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/sysconf.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -33,7 +33,7 @@
</span> */
long sysconf(int name) {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- long (*real_sysconf)(int);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static long (*os_sysconf)(int);
</span>
#if __MPLS_LIB_SUPPORT_SYSCONF_NPROCESSORS__
if ( name == _SC_NPROCESSORS_ONLN ) {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -85,11 +85,14 @@ long sysconf(int name) {
</span> #endif /* __MPLS_LIB_SUPPORT_SYSCONF_PHYS_PAGES__ */
/* for any other values of "name", call the real sysconf() */
<span style='display:block; white-space:pre;background:#ffe0e0;'>- real_sysconf = dlsym(RTLD_NEXT, "sysconf");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (real_sysconf == NULL) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- exit(EXIT_FAILURE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!os_sysconf) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ os_sysconf = dlsym(RTLD_NEXT, "sysconf");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Something's badly broken if this fails */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!os_sysconf) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ abort();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- return real_sysconf(name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return (*os_sysconf)(name);
</span> }
/* compatibility function so code does not have to be recompiled */
</pre><pre style='margin:0'>
</pre>