ID:               15527
 Updated by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
-Status:           Open
+Status:           Closed
 Bug Type:         Feature/Change Request
 Operating System: mandrake linux
 PHP Version:      4.1.1
 New Comment:

This bug has been fixed in CVS.

This particular "feature" already exists in the CVS version of php. You
may want to grab it and try it with your source.


Previous Comments:
------------------------------------------------------------------------

[2002-02-12 14:46:54] [EMAIL PROTECTED]

I have a simple script that I'm trying to write/read to shared memory
w/ the shmop_* functions.  The problem is
that it ALWAYS gives me php warnings when reading the
value from shared memory.  Doing some digging in the code
it seems that shmop_write always copies a string to 
shared memory, but it NEVER null terminates it.  This ALWAYS
causes shmop_read to report php warnings of 


Warning: String is not zero-terminated (5̏***@) (source:
zend_execute_API.c:274) in Unknown on line 0


I can't turn warnings off, just to avoid this issue.  I need
warnings on for debugging of the rest of my site.  MY question is,
shouldn't shmop_write() always memcopy the stringlen + the NULL
character, so when u do a read, this doesn't happen?  I know, then u
always have to add 1 to the shmop_read(), but isn't that normal to
assume u'd want the strlen + 1 for the null char?  

Here is my script
<?php


function xmp_var_dump( $var ) {
    echo "<xmp>\n";
    var_dump( $var );
    echo "</xmp>\n";
}


$key = 0x0ff;

$semid = sem_get ( $key, 1, 0666 );
if ( !sem_acquire( $semid ) ) {
    echo "Can't acquire semaphore<BR>";
    exit;
}

$size = 100;


$shmid = shmop_open( $key, 'c', 0, 0 );
//shmop_delete($shmid);
//shmop_close($shmid);
//exit;

if ( $shmid == '' ) {
    // Get register size:
    // Create shared memory block
    $shmid = shmop_open( $key, 'c', 0666, $size );
    xmp_var_Dump( $shmid );

    if ( $shmid == '' ) {
        echo "mem.mem: Can't create shared memory";
    } else {
        //  Set Header Info:
        xmp_var_dump( "writing test");
        shmop_write( $shmid, 5, 0 ); 
    }
} else {
    $var = shmop_read( $shmid, 0, 1);
    xmp_var_dump( $var );
}

shmop_close($shmid);

if( !sem_release( $semid ) ) {
    echo "find: Can't release semaphore";
    exit();
}

?>





Warning: shmopen: can't get the block in
/home/waboring/devel/current/php/fo/shmem/example3.php on line 22
int(2) string(12) "writing test"
Warning: shwrite: write (5), len = 1 in
/home/waboring/devel/current/php/fo/shmem/example3.php on line 38

------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=15527&edit=1

Reply via email to