Bug #79311 [Opn->Ver]: enchant_dict_suggest() function fails on Big endian architecture
Edit report at https://bugs.php.net/bug.php?id=79311&edit=1
ID: 79311
Updated by: cmb@php.net
Reported by: vibhutisawant18 at gmail dot com
Summary: enchant_dict_suggest() function fails on Big endian
architecture
-Status: Open
+Status: Verified
Type: Bug
Package: Variables related
Operating System: Ubuntu 16.04
PHP Version: master-Git-2020-02-27 (Git)
Block user comment: N
Private report: N
Previous Comments:
------------------------------------------------------------------------
[2020-02-27 11:06:32] cmb@php.net
Using memcpy() to assign a size_t value to an int variable is
⦠interesting. I'd *start* by changing this to proper
assignments.
------------------------------------------------------------------------
[2020-02-27 10:50:17] vibhutisawant18 at gmail dot com
Description:
------------
ext/enchant/tests/dict_suggest.phpt TC fails as enchant_dict_suggest function is not compatible on
Big Endian architecture.
The failure is observed at memcpy function in ext/enchant/enchant.c.
enchant_dict_suggest function fails to return an array of suggestions, instead it returns null
object.
It can be observed that the n_sugg variable is of type int(4 bytes) whereas the n_sugg_st variable
is of type size_t(8 bytes).
Hence due to different memory alignment on big endian system, the memcpy fails to copy the memory
blocks containing actual data.
AS a workaround, I found that by declaring data type of n_sugg as size_t instead of int, the TC
passed on both, Little and Big endian system.Kindly let me know if I shall raise a PR with this
changes.
PFB test result observed on Little and big endian architecture for respective
TC(ext/enchant/tests/dict_suggest.phpt).
Little endian:
test@5dfe04cf73b3:~/php/php-src$ ./sapi/cli/php -f "ext/enchant/tests/dict_suggest.phpt"
--TEST--
enchant_dict_suggest() function
--CREDITS--
marcosptf - <marcosptf@yahoo.com.br>
--SKIPIF--
--FILE--
OK
OK
OK
--EXPECT--
OK
OK
OK
Big endian:
test@3e72af658118:~/php/php-src$ ./sapi/cli/php -f "ext/enchant/tests/dict_suggest.phpt"
--TEST--
enchant_dict_suggest() function
--CREDITS--
marcosptf - <marcosptf@yahoo.com.br>
--SKIPIF--
--FILE--
OK
OK
dict suggest failed
--EXPECT--
OK
OK
OK
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=79311&edit=1
Thread (7 messages)