summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-08-18 09:05:16 +0400
committerDmitry Stogov <dmitry@zend.com>2014-08-18 09:05:16 +0400
commit8b3c2cc47eb91c8c97fb0f511c735511be7b8bc5 (patch)
tree9cb697d316cf5670cb3147e14dabe6981d8c9a38
parentb1c2e14954cc86db7bbf413907925d6fd2ead367 (diff)
parent3e79907b0abb0a9d0ff1580febb9d70dc095195c (diff)
downloadphp-git-8b3c2cc47eb91c8c97fb0f511c735511be7b8bc5.tar.gz
Merge branch 'master' of git.php.net:php-src
* 'master' of git.php.net:php-src: Updated NEWS for d790ec Correct typo in comments: 'initialized' typofixes typofixes Fixes missing Reflector interface constraints being enforced by the engine Fixed version id Update NEWS Update NEWS Fix another failing test Add NEWS Better version checking Better version checking Better version checking Fix failing tests Patch for bug #67839 (mysqli does not handle 4-byte floats correctly)
-rw-r--r--NEWS1
-rw-r--r--acinclude.m42
-rw-r--r--ext/ereg/tests/eregi_basic.phpt2
-rw-r--r--ext/fileinfo/tests/magic12
-rw-r--r--ext/intl/collator/collator_convert.c2
-rw-r--r--ext/json/json.c2
-rw-r--r--ext/mbstring/mb_gpc.c2
-rw-r--r--ext/mbstring/oniguruma/HISTORY4
-rw-r--r--ext/mysqli/mysqli.c2
-rw-r--r--ext/mysqli/tests/010.phpt12
-rw-r--r--ext/mysqli/tests/011.phpt4
-rw-r--r--ext/mysqli/tests/012.phpt4
-rw-r--r--ext/mysqli/tests/bug67839.phpt58
-rw-r--r--ext/mysqli/tests/mysqli_change_user.phpt28
-rw-r--r--ext/mysqli/tests/mysqli_change_user_old.phpt10
-rw-r--r--ext/mysqli/tests/mysqli_change_user_oo.phpt7
-rw-r--r--ext/mysqli/tests/mysqli_real_escape_string_gbk.phpt2
-rw-r--r--ext/mysqli/tests/mysqli_store_result_copy.phpt2
-rw-r--r--ext/mysqli/tests/table.inc7
-rw-r--r--ext/mysqlnd/config9.m426
-rw-r--r--ext/mysqlnd/mysqlnd_ps_codec.c49
-rw-r--r--ext/mysqlnd/mysqlnd_result.c2
-rw-r--r--ext/pcre/pcrelib/ChangeLog2
-rw-r--r--ext/pdo/pdo_dbh.c2
-rwxr-xr-xext/phar/phar_object.c2
-rw-r--r--ext/reflection/php_reflection.c22
-rw-r--r--ext/reflection/tests/ReflectionClass_toString_001.phpt4
-rw-r--r--ext/soap/interop/client_round2_interop.php2
-rw-r--r--ext/spl/php_spl.c2
-rw-r--r--ext/standard/tests/strings/dirname_basic.phpt2
-rw-r--r--ext/standard/url.c2
-rw-r--r--sapi/phpdbg/phpdbg_help.c4
-rw-r--r--scripts/dev/find_tested.php2
-rwxr-xr-xserver-tests-config.php2
-rw-r--r--win32/build/confutils.js2
-rw-r--r--win32/sendmail.h2
36 files changed, 225 insertions, 67 deletions
diff --git a/NEWS b/NEWS
index a5912f397d..1bef17b6ad 100644
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,7 @@ PHP NEWS
- Core:
. Added PHP_INT_MIN constant. (Andrea)
+ . Fixed inheritance chain of Reflector in ext/reflection (Tjerk)
- DBA:
. Fixed bug #62490 (dba_delete returns true on missing item (inifile)). (Mike)
diff --git a/acinclude.m4 b/acinclude.m4
index 3ccc7b2620..81dc0db34a 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -2800,7 +2800,7 @@ AC_DEFUN([PHP_DETECT_ICC],
dnl PHP_DETECT_SUNCC
dnl Detect if the systems default compiler is suncc.
-dnl We also set some usefull CFLAGS if the user didn't set any
+dnl We also set some useful CFLAGS if the user didn't set any
AC_DEFUN([PHP_DETECT_SUNCC],[
SUNCC="no"
AC_MSG_CHECKING([for suncc])
diff --git a/ext/ereg/tests/eregi_basic.phpt b/ext/ereg/tests/eregi_basic.phpt
index 14b4b7d395..cbcfdb6554 100644
--- a/ext/ereg/tests/eregi_basic.phpt
+++ b/ext/ereg/tests/eregi_basic.phpt
@@ -9,7 +9,7 @@ Test eregi() function : basic functionality - confirm case insensitivity
*/
/*
- * Test basic funtionality of eregi()
+ * Test basic functionality of eregi()
*/
echo "*** Testing eregi() : basic functionality ***\n";
diff --git a/ext/fileinfo/tests/magic b/ext/fileinfo/tests/magic
index dc80e8d370..4e1ce98ed2 100644
--- a/ext/fileinfo/tests/magic
+++ b/ext/fileinfo/tests/magic
@@ -3474,7 +3474,7 @@
>>>0x44 string =GLOB \b.
>>>>0x60 beshort x \b%.4d
-# Scripts that run in the embeded Python interpreter
+# Scripts that run in the embedded Python interpreter
0 string #!BPY Blender3D BPython script
#------------------------------------------------------------------------------
@@ -5154,7 +5154,7 @@
>>0 ubyte 0xF5 FoxPro with memo
# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
#>>0 ubyte 0xFA FoxPro 2.x, with memo
-# unkown version (should not happen)
+# unknown version (should not happen)
>>0 default x xBase
>>>0 ubyte x (0x%x)
# flags in version byte
@@ -5226,7 +5226,7 @@
>>>>0 ubelong =0 \b, next free block index %lu
>>>>0 ubelong !0 \b, next free block index %lu
>>>512 default x dBase IV DBT
-# DBF file name without extention
+# DBF file name without extension
>>>>8 string >\0 \b of %-.8s.DBF
# size of blocks ; not reliable 0x2020204C
#>>>>4 ulelong =0 \b, blocks size %lu
@@ -6591,7 +6591,7 @@
>>>>>379 string GRUB\ \0 \b, GRUB version 0.95 or 0.96
>>>>391 string Geom\0Hard\ Disk\0Read\0\ Error\0
>>>>>385 string GRUB\ \0 \b, GRUB version 0.97
-#unkown version
+#unknown version
>>>343 string Geom\0Read\0\ Error\0
>>>>321 string Loading\ stage1.5 \b, GRUB version x.y
>>>380 string Geom\0Hard\ Disk\0Read\0\ Error\0
@@ -12695,7 +12695,7 @@
#>65 string ZSYS (Pre-System 7 system file)
#>65 string acf3 (Aldus FreeHand)
#>65 string cdev (control panel)
-#>65 string dfil (Desk Acessory suitcase)
+#>65 string dfil (Desk Accessory suitcase)
#>65 string libr (library)
#>65 string nX^d (WriteNow word processor)
#>65 string nX^w (WriteNow dictionary)
@@ -17992,7 +17992,7 @@
# $File: sysex,v 1.7 2013/09/16 15:12:42 christos Exp $
# sysex: file(1) magic for MIDI sysex files
#
-# GRR: orginal 1 byte test at offset was too general as it catches also many FATs of DOS filesystems
+# GRR: original 1 byte test at offset was too general as it catches also many FATs of DOS filesystems
# where real SYStem EXclusive messages at offset 1 are limited to seven bits
# http://en.wikipedia.org/wiki/MIDI
0 ubeshort&0xFF80 0xF000 SysEx File -
diff --git a/ext/intl/collator/collator_convert.c b/ext/intl/collator/collator_convert.c
index 1d8681582c..7d8bf0bbc8 100644
--- a/ext/intl/collator/collator_convert.c
+++ b/ext/intl/collator/collator_convert.c
@@ -28,7 +28,7 @@
#include <unicode/ustring.h>
#include <php.h>
-#if (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION <= 1)
+#if PHP_VERSION_ID <= 50100
#define CAST_OBJECT_SHOULD_FREE ,0
#else
#define CAST_OBJECT_SHOULD_FREE
diff --git a/ext/json/json.c b/ext/json/json.c
index 0bf8a645e6..bc0544808f 100644
--- a/ext/json/json.c
+++ b/ext/json/json.c
@@ -365,7 +365,7 @@ static int json_utf8_to_utf16(unsigned short *utf16, char utf8[], int len) /* {{
}
}
} else {
- /* Only check if utf8 string is valid, and compute utf16 lenght */
+ /* Only check if utf8 string is valid, and compute utf16 length */
for (j=0 ; pos < len ; j++) {
us = php_next_utf8_char((const unsigned char *)utf8, len, &pos, &status);
if (status != SUCCESS) {
diff --git a/ext/mbstring/mb_gpc.c b/ext/mbstring/mb_gpc.c
index a2dd62da53..a0aab076a5 100644
--- a/ext/mbstring/mb_gpc.c
+++ b/ext/mbstring/mb_gpc.c
@@ -258,7 +258,7 @@ const mbfl_encoding *_php_mb_encoding_handler_ex(const php_mb_encoding_handler_i
goto out;
}
- num = n; /* make sure to process initilized vars only */
+ num = n; /* make sure to process initialized vars only */
/* initialize converter */
if (info->num_from_encodings <= 0) {
diff --git a/ext/mbstring/oniguruma/HISTORY b/ext/mbstring/oniguruma/HISTORY
index 6b3031bcb6..969deec36b 100644
--- a/ext/mbstring/oniguruma/HISTORY
+++ b/ext/mbstring/oniguruma/HISTORY
@@ -897,7 +897,7 @@ History
2004/10/18: [impl] (thanks Imai Yasumasa)
enclose #include <sys/types.h> by #ifndef __BORLANDC__.
2004/10/18: [bug] (thanks Imai Yasumasa)
- memory acess violation in select_opt_exact_info().
+ memory access violation in select_opt_exact_info().
2004/09/25: [dist] fix doc/API and doc/API.ja.
2004/09/25: [bug] fix OP_SEMI_END_BUF process in match_at() for
the case USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
@@ -1831,7 +1831,7 @@ History
2003/01/31: [impl] rename TTRANS() to TOLOWER().
2003/01/30: [bug] .c.o --> .c.obj in win32\Makefile.
2003/01/30: [impl] add -DNOT_RUBY to Makefile.in.
- NOT_RUBY is refered in regint.h for escape double
+ NOT_RUBY is referred in regint.h for escape double
including config.h.
2003/01/30: [impl] when string hasn't case ambiguity, don't compile
to ignore case opcode.
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c
index fb93095c42..02e6898f7f 100644
--- a/ext/mysqli/mysqli.c
+++ b/ext/mysqli/mysqli.c
@@ -585,7 +585,7 @@ PHP_MINIT_FUNCTION(mysqli)
mysqli_object_handlers.write_property = mysqli_write_property;
mysqli_object_handlers.get_property_ptr_ptr = std_hnd->get_property_ptr_ptr;
mysqli_object_handlers.has_property = mysqli_object_has_property;
-#if PHP_VERSION_ID >= 53000
+#if PHP_VERSION_ID >= 50300
mysqli_object_handlers.get_debug_info = mysqli_object_get_debug_info;
#endif
memcpy(&mysqli_object_driver_handlers, &mysqli_object_handlers, sizeof(zend_object_handlers));
diff --git a/ext/mysqli/tests/010.phpt b/ext/mysqli/tests/010.phpt
index 60ff8eac19..83a43e06b6 100644
--- a/ext/mysqli/tests/010.phpt
+++ b/ext/mysqli/tests/010.phpt
@@ -62,18 +62,18 @@ mysqli_close($link);
--EXPECT--
array(7) {
[0]=>
- float(3.14159274101)
+ float(3.141593)
[1]=>
- float(-9.99999997475E-7)
+ float(-1.0E-6)
[2]=>
float(0)
[3]=>
- float(999999995904)
+ float(1.0E+12)
[4]=>
- float(0.564642488956)
+ float(0.5646425)
[5]=>
float(1)
[6]=>
- float(8.88888914608E+14)
+ float(8.888889E+14)
}
-done! \ No newline at end of file
+done!
diff --git a/ext/mysqli/tests/011.phpt b/ext/mysqli/tests/011.phpt
index db03abac83..b14516ff78 100644
--- a/ext/mysqli/tests/011.phpt
+++ b/ext/mysqli/tests/011.phpt
@@ -67,7 +67,7 @@ array(8) {
[3]=>
int(4999999)
[4]=>
- float(2345.60009766)
+ float(2345.6)
[5]=>
float(5678.89563)
[6]=>
@@ -75,4 +75,4 @@ array(8) {
[7]=>
%unicode|string%(11) "mysql rulez"
}
-done! \ No newline at end of file
+done!
diff --git a/ext/mysqli/tests/012.phpt b/ext/mysqli/tests/012.phpt
index 7cc34b0c00..91abae4850 100644
--- a/ext/mysqli/tests/012.phpt
+++ b/ext/mysqli/tests/012.phpt
@@ -66,7 +66,7 @@ array(8) {
[3]=>
int(54)
[4]=>
- float(2.59999990463)
+ float(2.6)
[5]=>
float(58.89)
[6]=>
@@ -74,4 +74,4 @@ array(8) {
[7]=>
%unicode|string%(3) "6.7"
}
-done! \ No newline at end of file
+done!
diff --git a/ext/mysqli/tests/bug67839.phpt b/ext/mysqli/tests/bug67839.phpt
new file mode 100644
index 0000000000..b2821a21bc
--- /dev/null
+++ b/ext/mysqli/tests/bug67839.phpt
@@ -0,0 +1,58 @@
+--TEST--
+mysqli_float_handling - ensure 4 byte float is handled correctly
+--SKIPIF--
+<?php
+ require_once('skipif.inc');
+ require_once('skipifemb.inc');
+ require_once('skipifconnectfailure.inc');
+?>
+--FILE--
+<?php
+ require('connect.inc');
+ if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
+ printf("[001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
+ die();
+ }
+
+
+ if (!mysqli_query($link, "DROP TABLE IF EXISTS test")) {
+ printf("[002] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ die();
+ }
+
+ if (!mysqli_query($link, "CREATE TABLE test(id INT PRIMARY KEY, fp4 FLOAT, fp8 DOUBLE) ENGINE = InnoDB")) {
+ printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ die();
+ }
+
+ // Insert via string to make sure the real floating number gets to the DB
+ if (!mysqli_query($link, "INSERT INTO test(id, fp4, fp8) VALUES (1, 9.9999, 9.9999)")) {
+ printf("[004] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ die();
+ }
+
+ if (!($stmt = mysqli_prepare($link, "SELECT id, fp4, fp8 FROM test"))) {
+ printf("[005] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ die();
+ }
+
+ if (!mysqli_stmt_execute($stmt)) {
+ printf("[006] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ die();
+ }
+
+
+ if (!($result = mysqli_stmt_get_result($stmt))) {
+ printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ die();
+ }
+
+ $data = mysqli_fetch_assoc($result);
+ print $data['id'] . ": " . $data['fp4'] . ": " . $data['fp8'] . "\n";
+?>
+--CLEAN--
+<?php
+ require_once("clean_table.inc");
+?>
+--EXPECTF--
+1: 9.9999: 9.9999
diff --git a/ext/mysqli/tests/mysqli_change_user.phpt b/ext/mysqli/tests/mysqli_change_user.phpt
index 7a4530f0d5..09009a1368 100644
--- a/ext/mysqli/tests/mysqli_change_user.phpt
+++ b/ext/mysqli/tests/mysqli_change_user.phpt
@@ -42,10 +42,34 @@ require_once('skipifconnectfailure.inc');
if (false !== ($tmp = @mysqli_change_user($link, $user, $passwd . '_unknown_really', $db)))
printf("[009] Expecting false, got %s/%s\n", gettype($tmp), $tmp);
+ // Reconnect because after 3 failed change_user attempts, the server blocks you off.
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
- printf("[010] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+ printf("[009a] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
$host, $user, $db, $port, $socket);
+ if (!mysqli_query($link, 'SET @mysqli_change_user_test_var=1'))
+ printf("[010] Failed to set test variable: [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+
+ if (!$res = mysqli_query($link, 'SELECT @mysqli_change_user_test_var AS test_var'))
+ printf("[011] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ $tmp = mysqli_fetch_assoc($res);
+ mysqli_free_result($res);
+ if (1 != $tmp['test_var'])
+ printf("[012] Cannot set test variable\n");
+
+ if (true !== ($tmp = mysqli_change_user($link, $user, $passwd, $db)))
+ printf("[013] Expecting true, got %s/%s\n", gettype($tmp), $tmp);
+
+ if (!$res = mysqli_query($link, 'SELECT database() AS dbname, user() AS user'))
+ printf("[014] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ $tmp = mysqli_fetch_assoc($res);
+ mysqli_free_result($res);
+
+ if (substr($tmp['user'], 0, strlen($user)) !== $user)
+ printf("[015] Expecting user %s, got user() %s\n", $user, $tmp['user']);
+ if ($tmp['dbname'] != $db)
+ printf("[016] Expecting database %s, got database() %s\n", $db, $tmp['dbname']);
+
if (false !== ($tmp = @mysqli_change_user($link, $user, $passwd, $db . '_unknown_really')))
printf("[011] Expecting false, got %s/%s\n", gettype($tmp), $tmp);
@@ -121,4 +145,4 @@ require_once('skipifconnectfailure.inc');
print "done!";
?>
--EXPECTF--
-done! \ No newline at end of file
+done!
diff --git a/ext/mysqli/tests/mysqli_change_user_old.phpt b/ext/mysqli/tests/mysqli_change_user_old.phpt
index ddb49cd189..96357ebf51 100644
--- a/ext/mysqli/tests/mysqli_change_user_old.phpt
+++ b/ext/mysqli/tests/mysqli_change_user_old.phpt
@@ -48,6 +48,14 @@ if (mysqli_get_server_version($link) >= 50600)
if (false !== ($tmp = mysqli_change_user($link, $user, $passwd, $db . '_unknown_really')))
printf("[009] Expecting false, got %s/%s\n", gettype($tmp), $tmp);
+ // Reconnect because Percona and MariaDB block any commands after 3 failed
+ // change_user commands
+ mysqli_close($link);
+
+ if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
+ printf("[020] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+ $host, $user, $db, $port, $socket);
+ }
if (!mysqli_query($link, 'SET @mysqli_change_user_test_var=1'))
printf("[010] Failed to set test variable: [%d] %s\n", mysqli_errno($link), mysqli_error($link));
@@ -116,4 +124,4 @@ if (mysqli_get_server_version($link) >= 50600)
print "done!";
?>
--EXPECTF--
-done! \ No newline at end of file
+done!
diff --git a/ext/mysqli/tests/mysqli_change_user_oo.phpt b/ext/mysqli/tests/mysqli_change_user_oo.phpt
index 7ed2d08933..34a3e51bb1 100644
--- a/ext/mysqli/tests/mysqli_change_user_oo.phpt
+++ b/ext/mysqli/tests/mysqli_change_user_oo.phpt
@@ -46,6 +46,11 @@ if (mysqli_get_server_version($link) >= 50600)
if (false !== ($tmp = $mysqli->change_user($user, $passwd, $db . '_unknown_really')))
printf("[008] Expecting false, got %s/%s\n", gettype($tmp), $tmp);
+ // Reconnect because after 3 failed change_user attempts, the server blocks you off.
+ if (!$mysqli = new my_mysqli($host, $user, $passwd, $db, $port, $socket))
+ printf("[001] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+ $host, $user, $db, $port, $socket);
+
if (!$mysqli->query('SET @mysqli_change_user_test_var=1'))
printf("[009] Failed to set test variable: [%d] %s\n", $mysqli->errno, $mysqli->error);
@@ -84,4 +89,4 @@ if (mysqli_get_server_version($link) >= 50600)
print "done!";
?>
--EXPECTF--
-done! \ No newline at end of file
+done!
diff --git a/ext/mysqli/tests/mysqli_real_escape_string_gbk.phpt b/ext/mysqli/tests/mysqli_real_escape_string_gbk.phpt
index ee84c86866..53424e6e74 100644
--- a/ext/mysqli/tests/mysqli_real_escape_string_gbk.phpt
+++ b/ext/mysqli/tests/mysqli_real_escape_string_gbk.phpt
@@ -36,7 +36,7 @@ $port, $socket, mysqli_connect_errno(), mysqli_connect_error());
mysqli_error($link));
}
- if (!mysqli_query($link, 'CREATE TABLE test(id INT, label CHAR(1), PRIMARY
+ if (!mysqli_query($link, 'CREATE TABLE test(id INT, label CHAR(3), PRIMARY
KEY(id)) ENGINE=' . $engine . " DEFAULT CHARSET=gbk")) {
printf("Failed to create test table: [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
diff --git a/ext/mysqli/tests/mysqli_store_result_copy.phpt b/ext/mysqli/tests/mysqli_store_result_copy.phpt
index 304300459b..cdbccee198 100644
--- a/ext/mysqli/tests/mysqli_store_result_copy.phpt
+++ b/ext/mysqli/tests/mysqli_store_result_copy.phpt
@@ -75,7 +75,7 @@ mysqlnd.fetch_data_copy=0
printf("No result: %d\n", $no_result);
/* implicit free, implicit store */
- /* meta and fetch lenghts code */
+ /* meta and fetch lengths code */
if (!$res = mysqli_query($link, "SELECT CONCAT(id, id) AS _c, label FROM test ORDER BY id DESC LIMIT 2"))
printf("[011] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
diff --git a/ext/mysqli/tests/table.inc b/ext/mysqli/tests/table.inc
index cb089bb950..e0d7a06c57 100644
--- a/ext/mysqli/tests/table.inc
+++ b/ext/mysqli/tests/table.inc
@@ -12,6 +12,11 @@ if (!mysqli_query($link, 'DROP TABLE IF EXISTS test')) {
exit(1);
}
+if (!mysqli_query($link, 'SET SESSION sql_mode=\'\'')) {
+ printf("Failed to drop old test table: [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+ exit(1);
+}
+
if (!mysqli_query($link, 'CREATE TABLE test(id INT DEFAULT 0, label CHAR(1), PRIMARY KEY(id)) ENGINE=' . $engine)) {
printf("Failed to create test table: [%d] %s\n", mysqli_errno($link), mysqli_error($link));
exit(1);
@@ -20,4 +25,4 @@ if (!mysqli_query($link, 'CREATE TABLE test(id INT DEFAULT 0, label CHAR(1), PRI
if (!mysqli_query($link, "INSERT INTO test(id, label) VALUES (1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'), (6, 'f')")) {
printf("[%d] %s\n", mysqli_errno($link), mysqli_error($link));
}
-?> \ No newline at end of file
+?>
diff --git a/ext/mysqlnd/config9.m4 b/ext/mysqlnd/config9.m4
index d94d217945..816f4431f5 100644
--- a/ext/mysqlnd/config9.m4
+++ b/ext/mysqlnd/config9.m4
@@ -49,3 +49,29 @@ fi
if test "$PHP_MYSQLND" != "no" || test "$PHP_MYSQLND_ENABLED" = "yes" || test "$PHP_MYSQLI" != "no"; then
PHP_ADD_BUILD_DIR([ext/mysqlnd], 1)
fi
+
+dnl
+dnl Check if the compiler supports Decimal32/64/128 types from the IEEE-754 2008 version
+dnl References: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1657.pdf
+dnl http://speleotrove.com/decimal/
+dnl
+AC_CACHE_CHECK([whether whether compiler supports Decimal32/64/128 types], ac_cv_decimal_fp_supported,[
+AC_TRY_RUN( [
+#include <stdio.h>
+
+int main(int argc, char **argv) {
+ typedef float dec32 __attribute__((mode(SD)));
+ dec32 k = 99.49f;
+ double d2 = (double)k;
+ return 0;
+}
+],[
+ ac_cv_decimal_fp_supported=yes
+],[
+ ac_cv_decimal_fp_supported=no
+],[
+ ac_cv_decimal_fp_supported=no
+])])
+if test "$ac_cv_decimal_fp_supported" = "yes"; then
+ AC_DEFINE(HAVE_DECIMAL_FP_SUPPORT, 1, [Define if the compiler supports Decimal32/64/128 types.])
+fi
diff --git a/ext/mysqlnd/mysqlnd_ps_codec.c b/ext/mysqlnd/mysqlnd_ps_codec.c
index e80aa5565e..746cf01a26 100644
--- a/ext/mysqlnd/mysqlnd_ps_codec.c
+++ b/ext/mysqlnd/mysqlnd_ps_codec.c
@@ -174,12 +174,53 @@ ps_fetch_int64(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_l
static void
ps_fetch_float(zval * zv, const MYSQLND_FIELD * const field, unsigned int pack_len, zend_uchar ** row TSRMLS_DC)
{
- float value;
+ float fval;
+ double dval;
DBG_ENTER("ps_fetch_float");
- float4get(value, *row);
- ZVAL_DOUBLE(zv, value);
+ float4get(fval, *row);
(*row)+= 4;
- DBG_INF_FMT("value=%f", value);
+ DBG_INF_FMT("value=%f", fval);
+
+ /*
+ * The following is needed to correctly support 4-byte floats.
+ * Otherwise, a value of 9.99 in a FLOAT column comes out of mysqli
+ * as 9.9998998641968.
+ *
+ * For GCC, we use the built-in decimal support to "up-convert" a
+ * 4-byte float to a 8-byte double.
+ * When that is not available, we fall back to converting the float
+ * to a string and then converting the string to a double. This mimics
+ * what MySQL does.
+ */
+#ifdef HAVE_DECIMAL_FP_SUPPORT
+ {
+ typedef float dec32 __attribute__((mode(SD)));
+ dec32 d32val = fval;
+
+ /* The following cast is guaranteed to do the right thing */
+ dval = (double) d32val;
+ }
+#else
+ {
+ char num_buf[2048]; /* Over allocated */
+ char *s;
+
+ /* Convert to string. Ignoring localization, etc.
+ * Following MySQL's rules. If precision is undefined (NOT_FIXED_DEC i.e. 31)
+ * or larger than 31, the value is limited to 6 (FLT_DIG).
+ */
+ s = php_gcvt(fval,
+ field->decimals >= 31 ? 6 : field->decimals,
+ '.',
+ 'e',
+ num_buf);
+
+ /* And now convert back to double */
+ dval = zend_strtod(s, NULL);
+ }
+#endif
+
+ ZVAL_DOUBLE(zv, dval);
DBG_VOID_RETURN;
}
/* }}} */
diff --git a/ext/mysqlnd/mysqlnd_result.c b/ext/mysqlnd/mysqlnd_result.c
index a8d1a56530..0641d504c6 100644
--- a/ext/mysqlnd/mysqlnd_result.c
+++ b/ext/mysqlnd/mysqlnd_result.c
@@ -1343,7 +1343,7 @@ MYSQLND_METHOD(mysqlnd_res, store_result_fetch_data)(MYSQLND_CONN_DATA * const c
No need to FREE_ALLOCA as we can reuse the
'lengths' and 'fields' arrays. For lengths its absolutely safe.
'fields' is reused because the ownership of the strings has been
- transfered above.
+ transferred above.
*/
}
/* Overflow ? */
diff --git a/ext/pcre/pcrelib/ChangeLog b/ext/pcre/pcrelib/ChangeLog
index 7801ef8411..279398ef40 100644
--- a/ext/pcre/pcrelib/ChangeLog
+++ b/ext/pcre/pcrelib/ChangeLog
@@ -5431,7 +5431,7 @@ by an auxiliary program - but can then be edited by hand if required. There are
now no calls to isalnum(), isspace(), isdigit(), isxdigit(), tolower() or
toupper() in the code.
-7. Turn the malloc/free funtions variables into pcre_malloc and pcre_free and
+7. Turn the malloc/free functions variables into pcre_malloc and pcre_free and
make them global. Abolish the function for setting them, as the caller can now
set them directly.
diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c
index b2904118e8..cdf639a72d 100644
--- a/ext/pdo/pdo_dbh.c
+++ b/ext/pdo/pdo_dbh.c
@@ -1412,7 +1412,7 @@ void pdo_dbh_init(TSRMLS_D)
REGISTER_PDO_CLASS_CONST_LONG("FETCH_UNIQUE",(long)PDO_FETCH_UNIQUE);
REGISTER_PDO_CLASS_CONST_LONG("FETCH_KEY_PAIR",(long)PDO_FETCH_KEY_PAIR);
REGISTER_PDO_CLASS_CONST_LONG("FETCH_CLASSTYPE",(long)PDO_FETCH_CLASSTYPE);
-#if PHP_MAJOR_VERSION > 5 || PHP_MINOR_VERSION >= 1
+#if PHP_VERSION_ID >= 50100
REGISTER_PDO_CLASS_CONST_LONG("FETCH_SERIALIZE",(long)PDO_FETCH_SERIALIZE);
#endif
REGISTER_PDO_CLASS_CONST_LONG("FETCH_PROPS_LATE",(long)PDO_FETCH_PROPS_LATE);
diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c
index 3d403fff57..e9acfe435b 100755
--- a/ext/phar/phar_object.c
+++ b/ext/phar/phar_object.c
@@ -30,7 +30,7 @@ static zend_class_entry *phar_ce_PharException;
static zend_class_entry *phar_ce_entry;
#endif
-#if PHP_MAJOR_VERSION > 5 || ((PHP_MAJOR_VERSION == 5) && (PHP_MINOR_VERSION >= 3))
+#if PHP_VERSION_ID >= 50300
# define PHAR_ARG_INFO
#else
# define PHAR_ARG_INFO static
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 4248de834d..e4ad9416f0 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -261,15 +261,6 @@ static void _default_lookup_entry(zval *object, char *name, int name_len, zval *
/* }}} */
#endif
-static void reflection_register_implement(zend_class_entry *class_entry, zend_class_entry *interface_entry TSRMLS_DC) /* {{{ */
-{
- zend_uint num_interfaces = ++class_entry->num_interfaces;
-
- class_entry->interfaces = (zend_class_entry **) realloc(class_entry->interfaces, sizeof(zend_class_entry *) * num_interfaces);
- class_entry->interfaces[num_interfaces - 1] = interface_entry;
-}
-/* }}} */
-
static zend_function *_copy_function(zend_function *fptr TSRMLS_DC) /* {{{ */
{
if (fptr
@@ -5687,7 +5678,6 @@ ZEND_END_ARG_INFO()
static const zend_function_entry reflection_function_abstract_functions[] = {
ZEND_ME(reflection, __clone, arginfo_reflection__void, ZEND_ACC_PRIVATE|ZEND_ACC_FINAL)
- PHP_ABSTRACT_ME(reflection_function, __toString, arginfo_reflection__void)
ZEND_ME(reflection_function, inNamespace, arginfo_reflection__void, 0)
ZEND_ME(reflection_function, isClosure, arginfo_reflection__void, 0)
ZEND_ME(reflection_function, isDeprecated, arginfo_reflection__void, 0)
@@ -6094,7 +6084,7 @@ PHP_MINIT_FUNCTION(reflection) /* {{{ */
INIT_CLASS_ENTRY(_reflection_entry, "ReflectionFunctionAbstract", reflection_function_abstract_functions);
_reflection_entry.create_object = reflection_objects_new;
reflection_function_abstract_ptr = zend_register_internal_class(&_reflection_entry TSRMLS_CC);
- reflection_register_implement(reflection_function_abstract_ptr, reflector_ptr TSRMLS_CC);
+ zend_class_implements(reflection_function_abstract_ptr TSRMLS_CC, 1, reflector_ptr);
zend_declare_property_string(reflection_function_abstract_ptr, "name", sizeof("name")-1, "", ZEND_ACC_ABSTRACT TSRMLS_CC);
INIT_CLASS_ENTRY(_reflection_entry, "ReflectionFunction", reflection_function_functions);
@@ -6107,7 +6097,7 @@ PHP_MINIT_FUNCTION(reflection) /* {{{ */
INIT_CLASS_ENTRY(_reflection_entry, "ReflectionParameter", reflection_parameter_functions);
_reflection_entry.create_object = reflection_objects_new;
reflection_parameter_ptr = zend_register_internal_class(&_reflection_entry TSRMLS_CC);
- reflection_register_implement(reflection_parameter_ptr, reflector_ptr TSRMLS_CC);
+ zend_class_implements(reflection_parameter_ptr TSRMLS_CC, 1, reflector_ptr);
zend_declare_property_string(reflection_parameter_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
INIT_CLASS_ENTRY(_reflection_entry, "ReflectionMethod", reflection_method_functions);
@@ -6126,7 +6116,7 @@ PHP_MINIT_FUNCTION(reflection) /* {{{ */
INIT_CLASS_ENTRY(_reflection_entry, "ReflectionClass", reflection_class_functions);
_reflection_entry.create_object = reflection_objects_new;
reflection_class_ptr = zend_register_internal_class(&_reflection_entry TSRMLS_CC);
- reflection_register_implement(reflection_class_ptr, reflector_ptr TSRMLS_CC);
+ zend_class_implements(reflection_class_ptr TSRMLS_CC, 1, reflector_ptr);
zend_declare_property_string(reflection_class_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
REGISTER_REFLECTION_CLASS_CONST_LONG(class, "IS_IMPLICIT_ABSTRACT", ZEND_ACC_IMPLICIT_ABSTRACT_CLASS);
@@ -6140,7 +6130,7 @@ PHP_MINIT_FUNCTION(reflection) /* {{{ */
INIT_CLASS_ENTRY(_reflection_entry, "ReflectionProperty", reflection_property_functions);
_reflection_entry.create_object = reflection_objects_new;
reflection_property_ptr = zend_register_internal_class(&_reflection_entry TSRMLS_CC);
- reflection_register_implement(reflection_property_ptr, reflector_ptr TSRMLS_CC);
+ zend_class_implements(reflection_property_ptr TSRMLS_CC, 1, reflector_ptr);
zend_declare_property_string(reflection_property_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
zend_declare_property_string(reflection_property_ptr, "class", sizeof("class")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
@@ -6152,13 +6142,13 @@ PHP_MINIT_FUNCTION(reflection) /* {{{ */
INIT_CLASS_ENTRY(_reflection_entry, "ReflectionExtension", reflection_extension_functions);
_reflection_entry.create_object = reflection_objects_new;
reflection_extension_ptr = zend_register_internal_class(&_reflection_entry TSRMLS_CC);
- reflection_register_implement(reflection_extension_ptr, reflector_ptr TSRMLS_CC);
+ zend_class_implements(reflection_extension_ptr TSRMLS_CC, 1, reflector_ptr);
zend_declare_property_string(reflection_extension_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
INIT_CLASS_ENTRY(_reflection_entry, "ReflectionZendExtension", reflection_zend_extension_functions);
_reflection_entry.create_object = reflection_objects_new;
reflection_zend_extension_ptr = zend_register_internal_class(&_reflection_entry TSRMLS_CC);
- reflection_register_implement(reflection_zend_extension_ptr, reflector_ptr TSRMLS_CC);
+ zend_class_implements(reflection_zend_extension_ptr TSRMLS_CC, 1, reflector_ptr);
zend_declare_property_string(reflection_zend_extension_ptr, "name", sizeof("name")-1, "", ZEND_ACC_PUBLIC TSRMLS_CC);
return SUCCESS;
diff --git a/ext/reflection/tests/ReflectionClass_toString_001.phpt b/ext/reflection/tests/ReflectionClass_toString_001.phpt
index 508530a547..8dd571c3a9 100644
--- a/ext/reflection/tests/ReflectionClass_toString_001.phpt
+++ b/ext/reflection/tests/ReflectionClass_toString_001.phpt
@@ -21,7 +21,7 @@ Class [ <internal:Reflection> class ReflectionClass implements Reflector ] {
}
- Static methods [1] {
- Method [ <internal:Reflection> static public method export ] {
+ Method [ <internal:Reflection, prototype Reflector> static public method export ] {
- Parameters [2] {
Parameter #0 [ <required> $argument ]
@@ -48,7 +48,7 @@ Class [ <internal:Reflection> class ReflectionClass implements Reflector ] {
}
}
- Method [ <internal:Reflection> public method __toString ] {
+ Method [ <internal:Reflection, prototype Reflector> public method __toString ] {
- Parameters [0] {
}
diff --git a/ext/soap/interop/client_round2_interop.php b/ext/soap/interop/client_round2_interop.php
index b8ee893d8d..fd5767cc17 100644
--- a/ext/soap/interop/client_round2_interop.php
+++ b/ext/soap/interop/client_round2_interop.php
@@ -373,7 +373,7 @@ class Interop_Client
}
$soap =& $endpoint_info['client'];
- # XXX how do we determine a failure on retreiving/parsing wsdl?
+ # XXX how do we determine a failure on retrieving/parsing wsdl?
if ($soap->wsdl->fault) {
$fault = $soap->wsdl->fault;
$soap_test->setResult(0,'WSDL',
diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c
index 62cf6ae144..f9a642410f 100644
--- a/ext/spl/php_spl.c
+++ b/ext/spl/php_spl.c
@@ -315,7 +315,7 @@ PHP_FUNCTION(spl_autoload)
RETURN_FALSE;
}
- if (file_exts == NULL) { /* autoload_extensions is not intialzed, set to defaults */
+ if (file_exts == NULL) { /* autoload_extensions is not initialized, set to defaults */
pos = SPL_DEFAULT_FILE_EXTENSIONS;
pos_len = sizeof(SPL_DEFAULT_FILE_EXTENSIONS) - 1;
} else {
diff --git a/ext/standard/tests/strings/dirname_basic.phpt b/ext/standard/tests/strings/dirname_basic.phpt
index 2b5e4d43d9..33fee611e0 100644
--- a/ext/standard/tests/strings/dirname_basic.phpt
+++ b/ext/standard/tests/strings/dirname_basic.phpt
@@ -1,5 +1,5 @@
--TEST--
-Test dirname() function : basic funtionality
+Test dirname() function : basic functionality
--FILE--
<?php
/* Prototype: string dirname ( string $path );
diff --git a/ext/standard/url.c b/ext/standard/url.c
index 7e848fecfe..3b9b22af90 100644
--- a/ext/standard/url.c
+++ b/ext/standard/url.c
@@ -266,7 +266,7 @@ PHPAPI php_url *php_url_parse_ex(char const *str, int length)
p = s;
} else {
/* memrchr is a GNU specific extension
- Emulate for wide compatability */
+ Emulate for wide compatibility */
for(p = e; p >= s && *p != ':'; p--);
}
diff --git a/sapi/phpdbg/phpdbg_help.c b/sapi/phpdbg/phpdbg_help.c
index 1e58dc69ca..c552529930 100644
--- a/sapi/phpdbg/phpdbg_help.c
+++ b/sapi/phpdbg/phpdbg_help.c
@@ -362,7 +362,7 @@ phpdbg_help_text_t phpdbg_help_text[] = {
" **-c** **-c**/my/php.ini Set php.ini file to load" CR
" **-d** **-d**memory_limit=4G Set a php.ini directive" CR
" **-n** Disable default php.ini" CR
-" **-q** Supress welcome banner" CR
+" **-q** Suppress welcome banner" CR
" **-v** Enable oplog output" CR
" **-s** Enable stepping" CR
" **-b** Disable colour" CR
@@ -545,7 +545,7 @@ phpdbg_help_text_t phpdbg_help_text[] = {
" $P break ZEND_ADD" CR
" $P b ZEND_ADD" CR
-" Break on any occurence of the opcode ZEND_ADD" CR CR
+" Break on any occurrence of the opcode ZEND_ADD" CR CR
" $P break del 2" CR
" $P b ~ 2" CR
diff --git a/scripts/dev/find_tested.php b/scripts/dev/find_tested.php
index f95c46251c..e841e2e959 100644
--- a/scripts/dev/find_tested.php
+++ b/scripts/dev/find_tested.php
@@ -88,7 +88,7 @@ function mark_methods_as_tested($method_info, $phpt_files) {
foreach($tested_functions as $tested_function) {
- // go through method info array marking this funtion as tested
+ // go through method info array marking this function as tested
foreach($method_info as &$current_method_record) {
if (strcasecmp($tested_function, $current_method_record[METHOD_NAME]) == 0) {
// matched the method name
diff --git a/server-tests-config.php b/server-tests-config.php
index 0ddff28cb2..a4fa88a5b2 100755
--- a/server-tests-config.php
+++ b/server-tests-config.php
@@ -52,7 +52,7 @@ $conf = array(
/* file extension of pages requested via http
this allows for php to be configured to parse
- extensions other than php, usefull for multiple
+ extensions other than php, useful for multiple
configurations under a single webserver */
'TEST_WEB_EXT' => 'php',
diff --git a/win32/build/confutils.js b/win32/build/confutils.js
index 489adf34a8..d8155bbaa8 100644
--- a/win32/build/confutils.js
+++ b/win32/build/confutils.js
@@ -1521,7 +1521,7 @@ function output_as_table(header, ar_out)
{
var l = header.length;
var cols = 80;
- var fixedlenght = "";
+ var fixedlength = "";
var t = 0;
var i,j,k,m;
var out = "| ";
diff --git a/win32/sendmail.h b/win32/sendmail.h
index 0a7698e2fe..6fed77ea06 100644
--- a/win32/sendmail.h
+++ b/win32/sendmail.h
@@ -5,7 +5,7 @@
#endif
#define HOST_NAME_LEN 256
-#define MAX_APPNAME_LENGHT 100
+#define MAX_APPNAME_LENGTH 100
#define MAIL_BUFFER_SIZE (1024*4) /* 4k buffer */
/* Return values */
#define MIN_ERROR_INDEX 0 /* Always 0 like SUCCESS */