| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
(cherry picked from commit 62e7b80267ac50364c0d74d3cd567da90639534b)
|
| |
|
|
|
|
|
|
| |
We make sure that negative values are properly compared.
(cherry picked from commit 1fdffd1c55d771ca22ae217784ab75fce592ad38)
|
|
|
|
| |
(cherry picked from commit 25238bdf6005b85ab844aa2b743b589dfce9f0d2)
|
|
|
|
| |
(cherry picked from commit 69fdc14152edefd75a33be7fe87d1194098c67f7)
|
| |
|
|
|
|
|
|
|
|
| |
Some commits missed to update the patch file, so we're catching up on
this.
To generally make this easier, we back-port generate_patch.sh from
PHP-7.4, where we now also generate magic.h from magic.h.in.
|
|
|
|
|
|
|
|
| |
We have to free the `ansiname`s, regardless of whether they have been
put into the hashtable or not.
Since bug79299.phpt already shows the leak when run with a leak
checker, there is no need for another regression test.
|
|
|
|
|
|
|
|
|
|
| |
Releasing the `com_dotnet_istream_wrapper` in `istream_destructor()` is
pointless, since `istream_destructor()` is only called when the
resource is going to be released. This recursion is not a real issue,
though, since the resource is never exposed to userland, and has at
most refcount 1, so due to well defined unsigned integer underflow, it
never is released twice. However, returning early in this case causes
a memory leak which needs to be fixed.
|
|
|
|
| |
Back up the doc comment when performing heredoc scanahead.
|
|
|
|
|
|
|
|
|
|
| |
For obvious reasons, we must not assign a `size_t` value to an `int`
variable using memcpy(). However, there is actually no need for the
intermediate `n_sugg_st` here, if we use the proper types in the first
place.
A regression test is not necessary, because dict_suggest.phpt already
exhibits the erroneous behavior on big endian architectures.
|
| |
|
| |
|
|
|
|
| |
Cf. <https://github.com/php/php-src/pull/5180#issuecomment-590259750>ff.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
While `mysqli_get_client_version()` calls `mysql_get_client_version()`
to retrieve the client version, `mysql::$client_version` is initialized
to `MYSQL_VERSION_ID`. Both should match though, and since the former
is the more useful information, we fix `mysql::$client_version`.
We do not add a regression test, because it would usually succeed
anyway, and we already have several tests with respective `assert()`s.
|
|
|
|
|
|
|
|
|
|
|
| |
or inside the handler
Always push the current user_error/exception_handler to the stack,
even when it is empty, so restore_error_handler() always works as
expected.
The user_error_handler is especially temporarily empty when we are inside
the error handler, which caused inconsistent behaviour before.
|
|
|
|
|
| |
Check that the header occurs after \n, not other whitespace
characters.
|
| |
|
|
|
|
|
|
|
| |
requests
Check all occurrences of the string "host:" (and other headers),
not just the first one.
|
|
|
|
|
|
|
| |
`lastid` has to retain its value during the traversal, so we move it to
an outer scope.
Patch contributed by Litiano Moura.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The fix for feature request #53466 did not properly handle resetting of
the corresponding statement; the problem with this is that the
statement does not know about its result sets. But even if we could
fix this, the `complete` handling still appears to be brittle, since
the `sqlite3_column_type()`docs[1] state:
| If the SQL statement does not currently point to a valid row, or if
| the column index is out of range, the result is undefined.
Fortunately, we can use `sqlite3_data_count()` instead, since[2]:
| If prepared statement P does not have results ready to return (via
| calls to the sqlite3_column() family of interfaces) then
| sqlite3_data_count(P) returns 0.
Thus, we guard `SQLite3::columnType()` with `sqlite3_data_count()`, and
completely drop updating the `php_sqlite3_result_object.complete`
field, but keep it for ABI BC purposes.
[1] <https://www.sqlite.org/c3ref/column_blob.html>
[2] <https://www.sqlite.org/c3ref/data_count.html>
|
| |
|
|
|
|
| |
Cosmetics.
|
| |
|
|\
| |
| |
| |
| | |
* PHP-7.2:
bump version to 7.2.29
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Firstly, we must not rely on `stmt->column_count` when freeing the
driver specific column values, but rather store the column count in
the driver data. Since the column count is a `short`, 16 bit are
sufficient, so we can store it in reserved bits of `pdo_odbc_stmt`.
Furthermore, we must not allocate new column value storage when the
statement is not executed, but rather when the column value storage has
not been allocated.
Finally, we have to introduce a driver specific `cursor_closer` to
avoid that `::closeCursor()` calls `odbc_stmt_next_rowset()` which then
frees the column value storage, because it may be still needed for
bound columns.
|
| | |
|
|\ \
| |/
| |
| |
| | |
* PHP-7.2:
Update NEWS [ci skip]
|
| | |
|
|\ \
| |/
| |
| |
| |
| |
| | |
* PHP-7.2:
Mark bug76348.phpt as online test
Fix bug #79082 - Files added to tar with Phar::buildFromIterator have all-access permissions
Fix bug #79221 - Null Pointer Dereference in PHP Session Upload Progress
|
| | |
|
| |
| |
| |
| | |
all-access permissions
|
| | |
|
| |
| |
| |
| | |
We must not access memory outside of the allocated buffer.
|
| |
| |
| |
| | |
all-access permissions
|
| | |
|
| |
| |
| |
| |
| | |
Dom level 2 core, DOM level 3 core and the DOM living standard agree
that `childNodes` always return a `NodeList`, and never `null`.
|
|\ \
| |/
| |
| |
| | |
* PHP-7.2:
Fix typo in recent bugfix
|
| | |
|
|\ \
| |/
| |
| |
| | |
* PHP-7.2:
Fix #77569: Write Acess Violation in DomImplementation
|
| |
| |
| |
| | |
We must not assume that the zval IS_STRING.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
To be able to see changes done only with `SetEnvironmentVariable()`, we
have to use `GetEnvironmentStrings()` instead of `environ`, because the
latter sees only changes done with `putenv()`.
For best backward compatibility we're using `GetEnvironmentStringsA()`;
switching to the wide string version likely makes sense for master,
though.
|
| |
| |
| |
| |
| |
| | |
If the `VT_ARRAY` is empty, i.e. its upperbound is less than its lower
bound, we must not call `php_com_safearray_get_elem()`, because that
function throws in this case.
|
| |
| |
| |
| |
| | |
`-2200000000` can't be converted to integer on x86, so the constructor
call would fail.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Because a `HRESULT` is a `LONG`[1], no special treatment is required on
x86 platforms to get appropriate values. On x64 platforms we prefer
positive values, what we could accomplish by casting the `HRESULT`
value to `ULONG` and then to `zend_long`, but since the current
behavior is correct and the performance improvement is negligible, we
defer that to master.
[1] <https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types#hresult>
|
| |
| |
| |
| |
| | |
Saving under the given `filename` may also work, but since
`::LoadFromFile` uses the `fullpath` we follow suit.
|
| | |
|
| | |
|