[DTrace-devel] [PATCH v4 3/7] test/operators: extend ternary tests to cover inet_ntoa*()s
Kris Van Hees
kris.van.hees at oracle.com
Mon Jul 21 19:59:29 UTC 2025
On Wed, Jul 09, 2025 at 03:46:56PM +0100, Alan Maguire via DTrace-devel wrote:
> inet_ntoa*() require temporary strings and ternary operators
> need temporaries for left and right; ensure ternary ops succeed
> with inet_ntoa*()s.
>
> Suggested-by: Eugene Loh <eugene.loh at oracle.com>
> Signed-off-by: Alan Maguire <alan.maguire at oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>
> ---
> test/unittest/operators/tst.ternary.d | 20 +++++++++++++++++++-
> test/unittest/operators/tst.ternary.r | 2 ++
> 2 files changed, 21 insertions(+), 1 deletion(-)
>
> diff --git a/test/unittest/operators/tst.ternary.d b/test/unittest/operators/tst.ternary.d
> index 9d47fcc2..aeced7ac 100644
> --- a/test/unittest/operators/tst.ternary.d
> +++ b/test/unittest/operators/tst.ternary.d
> @@ -8,7 +8,10 @@
> /*
> * ASSERTION:
> * Test the ternary operator. Test left-hand side true, right-hand side true,
> - * and multiple nested instances of the ternary operator.
> + * and multiple nested instances of the ternary operator. Since inet_ntoa*()
> + * relies on temporary strings, and ternary operators need both left- and
> + * right-side temporaries, test ternary inet_ntoa*() also.
> + *
> *
> * SECTION: Types, Operators, and Expressions/Conditional Expressions
> */
> @@ -18,10 +21,25 @@
> BEGIN
> {
> x = 0;
> + y = 1;
> printf("x is %s\n", x == 0 ? "zero" : "one");
> x = 1;
> printf("x is %s\n", x == 0 ? "zero" : "one");
> x = 2;
> printf("x is %s\n", x == 0 ? "zero" : x == 1 ? "one" : "two");
> + ipaddr = (ipaddr_t *)alloca(sizeof(ipaddr_t));
> + ipaddr2 = (in6_addr_t *)alloca(sizeof(in6_addr_t));
> + ipaddr2->in6_u.u6_addr32[0] = 0xffffffff;
> + ipaddr2->in6_u.u6_addr32[1] = 0xffffffff;
> + ipaddr2->in6_u.u6_addr32[2] = 0xffffffff;
> + ipaddr2->in6_u.u6_addr32[3] = 0xffffffff;
> + printf("ipaddr is %s\n", x > 1 ? inet_ntoa(ipaddr) :
> + x > 2 ? inet_ntoa(ipaddr) :
> + x > 3 ? inet_ntoa(ipaddr) :
> + inet_ntoa(ipaddr));
> + printf("ipaddr2 is %s\n", x > 1 ? inet_ntoa6(ipaddr2) :
> + x > 2 ? inet_ntoa6(ipaddr2) :
> + x > 3 ? inet_ntoa6(ipaddr2) :
> + inet_ntoa6(ipaddr2));
> exit(0);
> }
> diff --git a/test/unittest/operators/tst.ternary.r b/test/unittest/operators/tst.ternary.r
> index ec30800e..72201682 100644
> --- a/test/unittest/operators/tst.ternary.r
> +++ b/test/unittest/operators/tst.ternary.r
> @@ -1,4 +1,6 @@
> x is zero
> x is one
> x is two
> +ipaddr is 0.0.0.0
> +ipaddr2 is ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
>
> --
> 2.39.3
>
>
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel
More information about the DTrace-devel
mailing list