Doc #73771 [Ver]: Wrong "return values" section

From: Date: Mon, 23 Apr 2018 21:24:01 +0000
Subject: Doc #73771 [Ver]: Wrong "return values" section
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-15624@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=73771&edit=1 ID: 73771 Updated by: requinix@php.net Reported by: rjhdby@php.net Summary: Wrong "return values" section Status: Verified Type: Documentation Problem Package: COM related PHP Version: Irrelevant Assigned To: cmb Block user comment: N Private report: N New Comment: > VT_UI8(255) + VT_UI8(2) = VT_I4(2). Er, that's an AND, not addition. Previous Comments: ------------------------------------------------------------------------ [2018-04-23 21:20:10] requinix@php.net After some testing, VarEqv appears to return the same/similar type of value as it was passed; give it VT_BOOLs and it returns a VT_BOOL, or give it VT_UI8s and it returns a VT_UI8. I've also found some anecdotal evidence that VARIANTs have always blurred the line between integer and boolean. Presumably this behavior extends to any situation where integers and booleans can be treated the same way, though with a bit more testing the return type is the same boolean/integer nature but not necessarily the same VT_* type - for example, VT_UI8(255) + VT_UI8(2) = VT_I4(2). I'm thinking a warning in the variant_* functions that work with booleans (probably and,eqv,imp,not,or,xor), and/or a note in the VARIANT class docs that this type looseness happens. ------------------------------------------------------------------------ [2018-04-23 15:39:05] cmb@php.net > It is bitwise, not logical, operation. Indeed, so apparently MSDN is wrong, also wrt. VarXor which also works bitwise. ------------------------------------------------------------------------ [2016-12-17 18:20:29] andrewgrom at rambler dot ru $a = new VARIANT(255, VT_UI1); // 11111111 $b = new VARIANT(2, VT_UI1); // 00000010 $c = variant_eqv($a, $b); echo "result is: ".$c; result is: 2 <--- Does not match description "If each bit in left is equal to the corresponding bit in right then TRUE is returned, otherwise FALSE is returned." It is bitwise, not logical, operation. ------------------------------------------------------------------------ [2016-12-17 11:43:49] requinix@php.net It's equivalence: returning boolean makes sense. And it mirrors the VarEqv documentation. https://msdn.microsoft.com/en-us/library/windows/desktop/ms221077(v=vs.85).aspx What's the problem? ------------------------------------------------------------------------ [2016-12-17 09:49:47] rjhdby@php.net Description: ------------ --- From manual page: http://www.php.net/function.variant-eqv --- Totaly wrong: "If each bit in left is equal to the corresponding bit in right then TRUE is returned, otherwise FALSE is returned." This is BITWISE operation. ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=73771&edit=1

« previous php.doc.bugs (#15624) next »