Skip to content

Commit 5059d33

Browse files
authored
Merge branch 'php:master' into true-async-api
2 parents 29e0cd6 + a63d0a4 commit 5059d33

File tree

19 files changed

+128
-101
lines changed

19 files changed

+128
-101
lines changed

UPGRADING.INTERNALS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ PHP 8.5 INTERNALS UPGRADE NOTES
3131
runtime.
3232
. Removed the cache_slot argument of zend_check_user_type_slow() because
3333
now it only relies on the CE cache.
34+
. Added ZEND_NONSTRING attribute macro for character arrays that do not
35+
represent strings. This allows to silence the GCC 15.x
36+
`-Wunterminated-string-initialization` warning.
3437

3538
========================
3639
2. Build system changes

Zend/tests/type_declarations/static_type_param.phpt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ Static type is not allowed in parameters
33
--FILE--
44
<?php
55

6-
// TODO: We could prohibit this case in the compiler instead.
7-
86
class Test {
97
public function test(static $param) {
108
}

Zend/zend_portability.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -759,6 +759,12 @@ extern "C++" {
759759
# define ZEND_INDIRECT_RETURN
760760
#endif
761761

762+
#if __has_attribute(nonstring) && defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 15
763+
# define ZEND_NONSTRING __attribute__((nonstring))
764+
#else
765+
# define ZEND_NONSTRING
766+
#endif
767+
762768
#define __ZEND_DO_PRAGMA(x) _Pragma(#x)
763769
#define _ZEND_DO_PRAGMA(x) __ZEND_DO_PRAGMA(x)
764770
#if defined(__clang__)

ext/curl/tests/Caddyfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ respond /serverpush/pushed "pushed response"
1313
push /serverpush /serverpush/pushed
1414

1515
route /show_upload_size {
16-
templates
17-
respond `Content-length: ={{.Req.Header.Get "Content-length"}}=`
16+
templates
17+
respond `Content-length: ={{.Req.Header.Get "Content-length"}}=`
1818
}
1919

2020
basic_auth /http-basic-auth {

ext/fileinfo/create_data_file.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
$chunks = str_split($dta, CHUNK_SIZE);
4242
$chunks[count($chunks) - 1] = str_pad($chunks[count($chunks) - 1], CHUNK_SIZE, chr(0));
4343

44-
echo 'const unsigned char php_magic_database[' . count($chunks) . '][' . CHUNK_SIZE . "] = {\n";
44+
echo 'const unsigned char php_magic_database[' . count($chunks) . '][' . CHUNK_SIZE . "] ZEND_NONSTRING = {\n";
4545
foreach ($chunks as $chunk) {
4646
echo '"' . strtr($chunk, $map) . '",' . "\n";
4747
}

ext/fileinfo/data_file.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* This is a generated file, do not modify */
22
/* Usage: php create_data_file.php /path/to/magic.mgc > data_file.c */
3-
const unsigned char php_magic_database[10113][1024] = {
3+
const unsigned char php_magic_database[10113][1024] ZEND_NONSTRING = {
44
"\034\004\036\361\023\0\0\0\203A\0\0\037\034\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0=/\005\0\0\0\0\0\0\0\0\0\0\0\0\0/\0\0\0\0\0\0\0\0\0\0\0Brain Vision Data Exchange Marker File, Version\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Biosig/Brainvision Marker file\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0biosig/brainvision\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0=.\005\0\0\0\0\0\0\0\0\0\0\0\0\0z\0\0\0\0\0\0\0\0\0\0\0FileId=TMSi PortiLab sample log file\n\015Version=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
55
"Biosig/TMSiLOG\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0biosig/tmsilog\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0=+\005\0\0\0\0\0\004\0\0\0\0\0\0\0}\0\0\0\0\0\0\0\0\0\0\0Synergy\0\0048\0049(&\0048\0048)&\0048\0048\0048&\0048\0048\0048\0\0028\0\0\0\002\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0magic/biosig\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\001\0\0\0=\017\005\0\0\0\0\0\?\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\0\0\0\0CRawDataElement\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0magic/biosig\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
66
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\002\0\0\0=\016\005\0\0\0\0\0U\0\0\0\0\0\0\0\177\0\0\0\0\0\0\0\0\0\0\0CRawDataBuffer\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Biosig/SYNERGY\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0biosig/synergy\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0=+\005\0\0\0\0\0\0\0\0\0\0\0\0\0.\0\0\0\0\0\0\0\0\0\0\0Brain Vision V-Amp Data Header File Version\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Biosig/Brainvision V-Amp file\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0=&\005\0\0\0\0\0\0\0\0\0\0\0\0\0a\007\0\0\0\0\0\0\0\0\0\0MetaView Service",

ext/ldap/config.m4

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,16 @@ if test "$PHP_LDAP" != "no"; then
101101
102102
PHP_ADD_INCLUDE([$LDAP_INCDIR])
103103
104-
dnl Save original values
105-
_SAVE_CPPFLAGS=$CPPFLAGS
106-
_SAVE_LIBS=$LIBS
107-
CPPFLAGS="$CPPFLAGS -I$LDAP_INCDIR"
108-
LIBS="$LIBS $LDAP_SHARED_LIBADD"
104+
LDAP_CFLAGS="-I$LDAP_INCDIR"
105+
LDAP_LIBS=$LDAP_SHARED_LIBADD
109106
])
110107

108+
dnl Save original values
109+
_SAVE_CFLAGS=$CFLAGS
110+
_SAVE_LIBS=$LIBS
111+
CFLAGS="$CFLAGS $LDAP_CFLAGS"
112+
LIBS="$LIBS $LDAP_LIBS"
113+
111114
dnl Check for 3 arg ldap_set_rebind_proc
112115
AC_CACHE_CHECK([for 3 arg ldap_set_rebind_proc],
113116
[php_cv_have_3arg_setrebindproc],
@@ -134,11 +137,14 @@ if test "$PHP_LDAP" != "no"; then
134137
ldap_whoami_s
135138
]))
136139

137-
AS_IF([test "$PHP_LDAP_PKGCONFIG" = false], [
138-
dnl Restore original values
139-
CPPFLAGS=$_SAVE_CPPFLAGS
140-
LIBS=$_SAVE_LIBS
141-
])
140+
dnl Sanity check
141+
AC_CHECK_FUNC([ldap_sasl_bind_s],,
142+
[AC_CHECK_FUNC([ldap_simple_bind_s],,
143+
[AC_MSG_ERROR([LDAP library build check failed.])])])
144+
145+
dnl Restore original values
146+
CFLAGS=$_SAVE_CFLAGS
147+
LIBS=$_SAVE_LIBS
142148

143149
dnl SASL check
144150
AS_VAR_IF([PHP_LDAP_SASL], [no],, [
@@ -149,11 +155,6 @@ if test "$PHP_LDAP" != "no"; then
149155
[Define to 1 if the ldap extension has SASL support enabled.])
150156
])
151157

152-
dnl Sanity check
153-
AC_CHECK_FUNC([ldap_sasl_bind_s],,
154-
[AC_CHECK_FUNC([ldap_simple_bind_s],,
155-
[AC_MSG_ERROR([LDAP library build check failed.])])])
156-
157158
PHP_SUBST([LDAP_SHARED_LIBADD])
158159
AC_DEFINE([HAVE_LDAP], [1],
159160
[Define to 1 if the PHP extension 'ldap' is available.])

ext/lexbor/lexbor/core/sbst.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,21 @@ extern "C" {
1515

1616
#include "lexbor/core/base.h"
1717

18+
#ifdef __has_attribute
19+
# if __has_attribute(nonstring) && defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 15
20+
# define LXB_NONSTRING __attribute__((nonstring))
21+
# else
22+
# define LXB_NONSTRING
23+
# endif
24+
#else
25+
# define LXB_NONSTRING
26+
#endif
27+
1828

1929
typedef struct {
2030
lxb_char_t key;
2131

22-
lxb_char_t value[6];
32+
lxb_char_t value[6] LXB_NONSTRING;
2333
unsigned char value_len;
2434

2535
unsigned short left;

ext/lexbor/patches/0005-Shrink-size-of-static-binary-search-tree.patch

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,37 @@ Subject: [PATCH 5/6] Shrink size of static binary search tree
55

66
This also makes it more efficient on the data cache.
77
---
8-
source/lexbor/core/sbst.h | 10 +++++-----
8+
source/lexbor/core/sbst.h | 19 ++++++++++++++-----
99
source/lexbor/html/tokenizer/state.c | 2 +-
1010
utils/lexbor/html/tmp/tokenizer_res.h | 2 +-
1111
utils/lexbor/html/tokenizer_entities_bst.py | 10 +++++-----
1212
utils/lexbor/lexbor/LXB.py | 2 +-
13-
5 files changed, 13 insertions(+), 13 deletions(-)
13+
5 files changed, 21 insertions(+), 12 deletions(-)
1414

1515
diff --git a/source/lexbor/core/sbst.h b/source/lexbor/core/sbst.h
16-
index b0fbc54..40e0e91 100644
16+
index b0fbc54..15a1d40 100644
1717
--- a/source/lexbor/core/sbst.h
1818
+++ b/source/lexbor/core/sbst.h
19-
@@ -19,12 +19,12 @@ extern "C" {
19+
@@ -15,16 +15,25 @@ extern "C" {
20+
21+
#include "lexbor/core/base.h"
22+
23+
+#ifdef __has_attribute
24+
+# if __has_attribute(nonstring) && defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 15
25+
+# define LXB_NONSTRING __attribute__((nonstring))
26+
+# else
27+
+# define LXB_NONSTRING
28+
+# endif
29+
+#else
30+
+# define LXB_NONSTRING
31+
+#endif
32+
2033
typedef struct {
2134
lxb_char_t key;
2235

2336
- void *value;
2437
- size_t value_len;
25-
+ lxb_char_t value[6];
38+
+ lxb_char_t value[6] LXB_NONSTRING;
2639
+ unsigned char value_len;
2740

2841
- size_t left;
@@ -61,7 +74,7 @@ index b3701d5..73ab66e 100644
6174
* Do not change this file!
6275
*/
6376
diff --git a/utils/lexbor/html/tokenizer_entities_bst.py b/utils/lexbor/html/tokenizer_entities_bst.py
64-
index 4fa0999..7cd1335 100755
77+
index 4fa0999..8bd83b2 100755
6578
--- a/utils/lexbor/html/tokenizer_entities_bst.py
6679
+++ b/utils/lexbor/html/tokenizer_entities_bst.py
6780
@@ -1,6 +1,6 @@
@@ -107,7 +120,7 @@ index 4fa0999..7cd1335 100755
107120
+ "../../../source/lexbor/html/tokenizer/res.h",
108121
"data/entities.json");
109122
diff --git a/utils/lexbor/lexbor/LXB.py b/utils/lexbor/lexbor/LXB.py
110-
index 2370c66..c41e645 100755
123+
index 3e75812..b068ea3 100755
111124
--- a/utils/lexbor/lexbor/LXB.py
112125
+++ b/utils/lexbor/lexbor/LXB.py
113126
@@ -27,7 +27,7 @@ class Temp:

ext/lexbor/php_lexbor.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,6 @@
2929

3030
#include "php_lexbor.h"
3131

32-
/* Dynamically loadable module stuff */
33-
#ifdef COMPILE_DL_LEXBOR
34-
#ifdef ZTS
35-
ZEND_TSRMLS_CACHE_DEFINE()
36-
#endif
37-
ZEND_GET_MODULE(lexbor)
38-
#endif /* COMPILE_DL_LEXBOR */
39-
4032
static void *php_lexbor_malloc(size_t size)
4133
{
4234
return emalloc(size);

0 commit comments

Comments
 (0)