#22882 [Bgs]: shmop_read should return string length, not shm segment size

From: Date: Tue, 25 Mar 2003 22:10:04 +0000
Subject: #22882 [Bgs]: shmop_read should return string length, not shm segment size
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-36420@lists.php.net to get a copy of this message
ID: 22882 User updated by: discussion at vodopivec dot com Reported By: discussion at vodopivec dot com Status: Bogus Bug Type: Strings related Operating System: Linux PHP Version: 4.3.1 New Comment: You're right, rtrim is an elegant solution, once you figure what kind of problem you have... Maybe this should just be mentioned somewhere in shmop help files. Thank you for your prompt replies. Previous Comments: ------------------------------------------------------------------------ [2003-03-25 15:56:54] iliaa@php.net What you are asking for is a hack, shared memory segments may contain anything, including binary data. Which means just reading until 1st \0 may result in partiual data being read and that is bad. My solution was just one solution, I see at least two other possible approaches to the same problem. For example doing: $my_string = rtrim($my_string); would also remove the invisible \0 padding and make the string size 5 characters. ------------------------------------------------------------------------ [2003-03-25 15:35:48] discussion at vodopivec dot com I like your workaround, but that's still a workaround, isn't it? And most people wouldn't think of that. I would still prefer having separate functions for strings, php is supposed to be easy to use. Why not, it's not like it involves a lot of additional work? ------------------------------------------------------------------------ [2003-03-25 15:17:19] iliaa@php.net Ideally you should already know how much data you intend to read and would only read that many bytes rather then the entire segment. If that is now easily possible you could prefix your data with a 10 byte 'buffer' containing 0000000012 for example, which would indicate that the data following this header is 12 bytes long. ------------------------------------------------------------------------ [2003-03-25 14:59:50] discussion at vodopivec dot com You have the point and I agree; But how about having a separate function for this purpose, like shmop_read_string? The submitted php script demonstrates this problem, and although not impossible, it's extremely difficult to deal with this. After all, it doesn't make sense to write, then read shared memory, compare values and get false result. ------------------------------------------------------------------------ [2003-03-25 14:50:46] wez@php.net This would break binary data stored in the shm segment; we will not apply this patch. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/22882 -- Edit this bug report at http://bugs.php.net/?id=22882&edit=1

« previous php.bugs (#36420) next »