[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/2] xen: Introduce an xmemdup() helper
>>> On 10.07.18 at 10:44, <andrew.cooper3@xxxxxxxxxx> wrote: > On 10/07/2018 09:38, Jan Beulich wrote: >>>>> On 10.07.18 at 10:32, <roger.pau@xxxxxxxxxx> wrote: >>> On Mon, Jul 09, 2018 at 11:29:47AM +0100, Andrew Cooper wrote: >>>> --- a/xen/include/xen/xmalloc.h >>>> +++ b/xen/include/xen/xmalloc.h >>>> @@ -13,6 +13,16 @@ >>>> #define xmalloc(_type) ((_type *)_xmalloc(sizeof(_type), >>> __alignof__(_type))) >>>> #define xzalloc(_type) ((_type *)_xzalloc(sizeof(_type), >>> __alignof__(_type))) >>>> >>>> +/* Allocate space for a typed object and copy an existing instance. */ >>>> +#define xmemdup(ptr) \ >>>> +({ \ >>>> + typeof(*(ptr)) *p_ = (ptr), *n_ = xmalloc(typeof(*p_)); \ >>> Could you do? >>> >>> const typeof(*(ptr)) *p_ = (ptr); >>> typeof(*(ptr)) *n_ = xmalloc(typeof(*p_)); >> Wouldn't this second line again discard const then? If anything I >> was wondering whether p_ is needed in the first place. > > It is very easy to turn a possibly-const pointer const in the way > described above. It doesn't work the other way around because the > constness of the pointer gets propagated through the typeof, and there > is no nonconst (or equivalent) keyword. Sure, but my point was that with the above p_ is a pointer to const, and hence the type handed to xmalloc() is a pointer to const. Yet n_ is supposed to be a pointer to non-const, unless the incoming ptr was. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |