summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNARUSE, Yui <naruse@airemix.jp>2024-02-01 10:39:54 +0900
committerNARUSE, Yui <naruse@airemix.jp>2024-02-01 10:39:54 +0900
commit2886564279dff87a6c293f6e80436eb2b309967e (patch)
treef9b84a814f865a0e469a7c2a2ffe8289088f00f7
parentaeffb5e21de6000a3dcfa0ca88c6ba3c3c42d8db (diff)
merge revision(s) 6aacbd690ccde53f9b97c6673482cb11df3f2955: [Backport #20149]
Free pthread_attr after setting up the thread [bug #20149] --- ext/socket/raddrinfo.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
-rw-r--r--ext/socket/raddrinfo.c12
-rw-r--r--version.h2
2 files changed, 12 insertions, 2 deletions
diff --git a/ext/socket/raddrinfo.c b/ext/socket/raddrinfo.c
index 9747f94036..ceaac031a2 100644
--- a/ext/socket/raddrinfo.c
+++ b/ext/socket/raddrinfo.c
@@ -511,6 +511,11 @@ start:
}
pthread_detach(th);
+ int r;
+ if ((r = pthread_attr_destroy(&attr)) != 0) {
+ rb_bug_errno("pthread_attr_destroy", r);
+ }
+
rb_thread_call_without_gvl2(wait_getaddrinfo, arg, cancel_getaddrinfo, arg);
int need_free = 0;
@@ -732,12 +737,17 @@ start:
#endif
pthread_t th;
- if (do_pthread_create(&th, 0, do_getnameinfo, arg) != 0) {
+ if (do_pthread_create(&th, &attr, do_getnameinfo, arg) != 0) {
free_getnameinfo_arg(arg);
return EAI_AGAIN;
}
pthread_detach(th);
+ int r;
+ if ((r = pthread_attr_destroy(&attr)) != 0) {
+ rb_bug_errno("pthread_attr_destroy", r);
+ }
+
rb_thread_call_without_gvl2(wait_getnameinfo, arg, cancel_getnameinfo, arg);
int need_free = 0;
diff --git a/version.h b/version.h
index e8ee7a320a..c07bee99d1 100644
--- a/version.h
+++ b/version.h
@@ -11,7 +11,7 @@
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
#define RUBY_VERSION_TEENY 0
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
-#define RUBY_PATCHLEVEL 5
+#define RUBY_PATCHLEVEL 6
#include "ruby/version.h"
#include "ruby/internal/abi.h"