summaryrefslogtreecommitdiffstats
path: root/uwsgi_fix_php83.patch
diff options
context:
space:
mode:
authorRemi Collet <remi@remirepo.net>2023-09-04 13:30:55 +0200
committerRemi Collet <remi@php.net>2023-09-04 13:30:55 +0200
commitf248ae8e4297fa01e13b12289d3d280f9a8e45c5 (patch)
tree2c2757e26ad2213934af7d76f0c2d172c3f709c4 /uwsgi_fix_php83.patch
parent842be679f665ec048b8e5337d804c7c5a4fb9669 (diff)
add patch for PHP 8.3 from
https://github.com/unbit/uwsgi/pull/2559
Diffstat (limited to 'uwsgi_fix_php83.patch')
-rw-r--r--uwsgi_fix_php83.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/uwsgi_fix_php83.patch b/uwsgi_fix_php83.patch
new file mode 100644
index 0000000..156921b
--- /dev/null
+++ b/uwsgi_fix_php83.patch
@@ -0,0 +1,60 @@
+From 15df465bcb3a2725209f7ac261c5eeacd90ad672 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Mon, 4 Sep 2023 13:10:52 +0200
+Subject: [PATCH] ini_entries is read-only PHP 8.3
+
+---
+ plugins/php/php_plugin.c | 25 ++++++++++++++++++-------
+ 1 file changed, 18 insertions(+), 7 deletions(-)
+
+diff --git a/plugins/php/php_plugin.c b/plugins/php/php_plugin.c
+index b3efa006a..e0ead46ab 100644
+--- a/plugins/php/php_plugin.c
++++ b/plugins/php/php_plugin.c
+@@ -27,6 +27,7 @@ struct uwsgi_php {
+ char *fallback;
+ char *fallback2;
+ char *fallback_qs;
++ char *ini_entries;
+ size_t ini_size;
+ int dump_config;
+ char *server_software;
+@@ -232,21 +233,31 @@ static sapi_module_struct uwsgi_sapi_module;
+
+ void uwsgi_php_append_config(char *filename) {
+ size_t file_size = 0;
+- char *file_content = uwsgi_open_and_read(filename, &file_size, 1, NULL);
+- uwsgi_sapi_module.ini_entries = realloc(uwsgi_sapi_module.ini_entries, uphp.ini_size + file_size);
+- memcpy(uwsgi_sapi_module.ini_entries + uphp.ini_size, file_content, file_size);
++ char *file_content = uwsgi_open_and_read(filename, &file_size, 1, NULL);
++ if (uphp.ini_size) {
++ uphp.ini_entries = realloc(uphp.ini_entries, uphp.ini_size + file_size);
++ } else {
++ uphp.ini_entries = malloc(file_size);
++ }
++ memcpy(uphp.ini_entries + uphp.ini_size, file_content, file_size);
+ uphp.ini_size += file_size-1;
+ free(file_content);
++ uwsgi_sapi_module.ini_entries = uphp.ini_entries;
+ }
+
+ void uwsgi_php_set(char *opt) {
+
+- uwsgi_sapi_module.ini_entries = realloc(uwsgi_sapi_module.ini_entries, uphp.ini_size + strlen(opt)+2);
+- memcpy(uwsgi_sapi_module.ini_entries + uphp.ini_size, opt, strlen(opt));
++ if (uphp.ini_size) {
++ uphp.ini_entries = realloc(uphp.ini_entries, uphp.ini_size + strlen(opt)+2);
++ } else {
++ uphp.ini_entries = malloc(strlen(opt)+2);
++ }
++ memcpy(uphp.ini_entries + uphp.ini_size, opt, strlen(opt));
+
+ uphp.ini_size += strlen(opt)+1;
+- uwsgi_sapi_module.ini_entries[uphp.ini_size-1] = '\n';
+- uwsgi_sapi_module.ini_entries[uphp.ini_size] = 0;
++ uphp.ini_entries[uphp.ini_size-1] = '\n';
++ uphp.ini_entries[uphp.ini_size] = 0;
++ uwsgi_sapi_module.ini_entries = uphp.ini_entries;
+ }
+
+ extern ps_module ps_mod_uwsgi;