[farther OT] Re: Why Is Escaping Data Considered So Magical?

Michael Torrie torriem at gmail.com
Thu Jul 1 01:40:06 EDT 2010


On 06/30/2010 06:36 PM, Lawrence D'Oliveiro wrote:
> In message <mailman.2369.1277870727.32709.python-list at python.org>,
> Michael Torrie wrote:
> 
>> Okay, I will. Your code passes a char** when a char* is expected.
> 
> No it doesn’t.

You're right; it doesn't.  Your code passes char (*)[512].

warning: passing argument 1 of ‘snprintf’ from incompatible pointer type
/usr/include/stdio.h:385: note: expected ‘char * __restrict__’ but
argument is of type ‘char (*)[512]’

> And so you misunderstand the difference between a C array and a
> pointer.

You make a pretty big assumption.

Given "char buf[512]", buf's type is char * according to the compiler
and every C textbook I know of.  With a static char array, there's no
need to take it's address since it *is* the address of the first
element.  Taking the address can lead to problems if you ever substitute
a dynamically-allocated buffer for the statically-allocated one.  For
one-dimensional arrays at least, static arrays and pointers are
interchangeable when calling snprinf.  You do not agree?

Anyway, this is far enough away from Python.



More information about the Python-list mailing list