Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:106918 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 77691 invoked from network); 9 Sep 2019 14:40:20 -0000 Received: from unknown (HELO php-smtp3.php.net) (208.43.231.12) by pb1.pair.com with SMTP; 9 Sep 2019 14:40:20 -0000 Received: from php-smtp3.php.net (localhost [127.0.0.1]) by php-smtp3.php.net (Postfix) with ESMTP id 299E92C0544 for ; Mon, 9 Sep 2019 05:15:25 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp3.php.net X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FROM,SPF_HELO_NONE autolearn=no autolearn_force=no version=3.4.2 X-Spam-ASN: AS8560 212.227.0.0/16 X-Spam-Virus: No Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by php-smtp3.php.net (Postfix) with ESMTPS for ; Mon, 9 Sep 2019 05:15:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1568031322; bh=DKDJWJH7jW+fs6ExmquuIBJI8K3PdTpP8N3fCwfZj24=; h=X-UI-Sender-Class:Subject:To:References:From:Date:In-Reply-To; b=U3eO4dln4k6N2pWTFZNACT1Xv3HU9Y6hFKGxzISzET1pl6matAtSHBWDLGOPSHKqZ DPk8UNVSzfMVVQiVR+n3WnqBkrbR0myYGFp48aIo0djYG6+1i7FZfDPbF7vPOLVAdd tSxQkk3/DzKSUFFujLvdddD8IZUyt24HVjBSZEEo= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.2.144] ([84.179.236.50]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0M4nYT-1iLyND1joL-00yxJ6; Mon, 09 Sep 2019 14:15:22 +0200 To: Philip Hofstetter , PHP internals References: Message-ID: Date: Mon, 9 Sep 2019 14:15:21 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: de-DE Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:G3Seozbl4nVQhy5gbLsaIvNvuB1r95nCkH6C7+zUOhlAoQyp5ky A1L04v3dLKhYZuPG9ytfXAXlVa4lxN94z4nESDiIaZ6OwRjwW2whTrjH/51YZby530lwIv3 nHm8zaLD19N5UjAQhmQHn766Gy+eycKaQ9Fk6KAdg0amtslbr3f5aipxhbbzu/Wy7n6e2Fa awa4RXnIeXBP7gWmre3AA== X-UI-Out-Filterresults: notjunk:1;V03:K0:g9CcwD+KG9E=:H1yYE+bqS5wkaFfOs9yR2E BZMxFFApFrJldtYVouJ99lQNvrkbPE6TibQoZmBhQIS7farDCkr3XCNcelnVdWSbP1TfIvWJN kxO1/vbuRGMgQN1SVb0lAitJXPd7vlxWptaAZmB2JeFgzmf8PPrEB8OIbHd0bCaBmhFJ7YFWc 9GKEBo5ygo1E3m5thi+awQ+rvgSZdUzfp/QYDIfwvR/Y0OH9HZlohcN+81EnSTkwYqlHSVY8w 5vT4kqCryD37KKf1fHuHT24JQrSV5KnpmhZ8kJGMonvFDm9Yj2LmXwZ/2uo5w42fRU7S5SGMZ XE8+DiFKSwbplby1lAdEklqsZG1tr3SKwZRUxnnk5VUVXJg31K7BXBjnQ9uAV4zo2dFzuZmIL flcXvxE1rrDrVgHHO1qqcYPQa/MFoF9s36j9jq3EoU8/Eq0icXQ5uLc2JyOz2Bu9S+sFtMfB5 DmZx+lXtby+cxTbLZNpEIax1gsLyueDieDciGEvDeBX9c95E+Vk27NuZKSUAfOf2E2GSvirAy USfQW0oaIxxX9kHlqdSbaIYC22gSOBADuz/8KHlgtkX/DYu8EHt/KuZtNM9qZ6RKBEE8EWAaN cpqUr6OrYUJ9wz/sN467PnLT/C6/5PyNHhEZQLVUochDo1M99FXTtHa1V87uC+3RlrmldZcvH WmdhBA1e0U4AUrseTuY+ITJoXSly2g6hfa6zOavNPDUGaVHfjyuQuTIfkbpN8Jo7YXosyu9yi mv4Gg6ZgH2RAU08SXtwHfUIehqxUOIwd2xwWdVyitUGCN6W9GhyKnK0/AcHK7ZT9Dc8PWKqv7 EOSJ9xrB290QES3jtN8czQAUpHniiYe3YVF+pfUmQz6zaxCByxkZKOf4Yyleabq6F5EWvwaVQ s98+l6JY4MsYsIRVpealK9DHu2ru9J8DfVWki2hWN9sx3LbvaJwaYHuI6ctj+JhlDDTBdA8os igxoTTYX4CWdsNE73OvBv/im8BN3q9EFbt187Gb/B0LNd80OEnfbdJ4zY22YXseBMPmApzeEg WAlgosYsPhWbAGm5amalyZ/NovGhxvixJEAOzlq5sNVAYlHpDLZsCwZk8s5hUqzryB+6CIcYV 8C00ygHcDZS01/ya2VFdo6ChMjTesPrhjqX5Cu2NIaDT3Qbfc1r7Yc9OQpKvwdVd16pjIg2IB FUYYNrnjE/qb0CR8zziWFtNf1m2nlO2YwyTgU9/crz2zud5YKWGiT1SFgOoOv8X5MyBHOKzZ8 IRftpx/QpYK+uebr5 X-Envelope-From: Subject: Re: FFI extension / NULL-Checks From: cmbecker69@gmx.de ("Christoph M. Becker") On 09.09.2019 at 08:03, Philip Hofstetter wrote: > (I'm writing to the internals list because I don't think that at this > point, FFI usage is wide-spread enough to get an opinion on other venues= ) > > maybe I'm just stupid, but I think there has been a slight oversight in = the > API design for the FFI interface. > > My problem is with functions that return a pointer to a struct as an out > parameter. > > So in C, it would look like this: > > Error* err; > func(&err); > > if (err !=3D NULL){ > do_error_handling(); > } > > If I translate this to PHP FFI, I would do > > $err =3D $ffi->new("Error*"); > $ffi->func(FFI::addr($err)); > > if I `var_dump` $err, I do see a public {0} property be set to NULL or t= o > actual error data. > > My issue is though: How do I check whether err* as been assgined to? You could check FFI::addr($err)[0]: $err =3D $ffi->new("Error*"); $perr =3D FFI::addr($err); $ffi->func($perr); var_dump(is_null($perr[0])); FFI::free($perr); Not sure if it's supposed to require this indirection, though. =2D- Christoph M. Becker