invalid conversion from 'char*' to 'char' f permessive

while((long)ptr > 1 && (long)ptr < (long)buffer+taille) { // walk to the end

Why are you casting ptr to a long, when:

  1. It is NOT a pointer
  2. It is a char
    ?

Make ptr a pointer! Do NOT cast it.