+ if (to && MEM_ALIGN (to) > 0) + align = MEM_ALIGN (to); + if (align < MEM_ALIGN (from) && MEM_ALIGN (from) > 0) + align = MEM_ALIGN (from); MEM_ALIGN is always > 0, so I think you mean: align = MIN (to ? MEM_ALIGN (to) : align, MEM_ALIGN (from));