From: "Ahmed S. Darwish" <darwish.07@gmail.com>
To: Philipp Matthias Hahn <pmhahn@titan.lahn.de>
Cc: Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] NTFS error messages: replace static char pointers by static char arrays
Date: Wed, 10 Oct 2007 00:03:31 +0200 [thread overview]
Message-ID: <20071009220331.GD11579@Ahmed> (raw)
In-Reply-To: <20071009183359.GB3945@titan.lahn.de>
On Tue, Oct 09, 2007 at 08:33:59PM +0200, Philipp Matthias Hahn wrote:
> Hello!
>
> On Tue, Oct 09, 2007 at 02:40:35PM +0200, Ahmed S. Darwish wrote:
> > On Tue, Oct 09, 2007 at 01:55:42AM +0400, Dmitri Vorobiev wrote:
> > > The patch below contains a small code clean-up for the NTFS driver: all
> > > static char pointers to error message strings have been replaced by
> > > static char arrays.
>
> char * a = "a"; // pointer and content can be changed
Only the pointer can be changed here. AFAIK "a" is a const string.
> const char * b = "b"; // the thing pointed to is const
The "const" here is redundant (just useful for forcing the compiler to
prevent us from shooting our feet). The "b" string is already constant.
> char * const c = "c"; // the pointer is const
> const char * const d = "d"; // pointer and content can't be changed
>
> void foo(void) {
> *a = 'A';
This will segfault.
> a++;
> *b = 'B'; // error: assignment of read-only location
> b++;
> *c = 'C';
Last line will segfault too.
> c++; // error: increment of read-only variable 'c'
> *d = 'D'; // error: assignment of read-only location
> d++; // error: increment of read-only variable 'd'
> }
>
Please continue below.
> > Isn't the only difference between char *c = "msg" and char c[] = "msg" is
> > that the first is a non-const pointer to a const char array while the second
> > is a modifiable char array ?
>
> $ cat [ab].c
> const char *a = "a";
> const char b[] = "b";
> $ gcc -c [ab].c
> $ size [ab].o
> text data bss dec hex filename
> 2 4 0 6 6 a.o
> 2 0 0 2 2 b.o
>
> 'a' has two entries: one for the named read-writeable pointer, and one for the
> anonymous read-only string, the pointer points to.
> 'b' has a single entry: just the named read-only string.
>
Got the point, Thanks!.
--
Ahmed S. Darwish
HomePage: http://darwish.07.googlepages.com
Blog: http://darwish-07.blogspot.com
next prev parent reply other threads:[~2007-10-09 22:03 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-08 21:55 [PATCH] NTFS error messages: replace static char pointers by static char arrays Dmitri Vorobiev
2007-10-09 12:40 ` Ahmed S. Darwish
2007-10-09 18:33 ` Philipp Matthias Hahn
2007-10-09 22:03 ` Ahmed S. Darwish [this message]
2007-10-09 18:45 ` Dmitri Vorobiev
2007-10-13 22:00 ` Folkert van Heusden
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071009220331.GD11579@Ahmed \
--to=darwish.07@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=pmhahn@titan.lahn.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.