From a bug report. Pointer subtraction yields a result of type ptrdiff_t which can be bigger than type long, potentially resulting in warnings about value truncation--in these cases, when assigning to a long.