From: Marcel Holtmann <marcel@holtmann.org>
To: ofono@ofono.org
Subject: Re: [PATCH 0/6] PPP Patches v3
Date: Tue, 23 Mar 2010 12:07:21 -0700 [thread overview]
Message-ID: <1269371241.11714.99.camel@localhost.localdomain> (raw)
In-Reply-To: <20100323112617.169cded4@kcaccard-MOBL3>
[-- Attachment #1: Type: text/plain, Size: 2946 bytes --]
Hi Kristen,
> > > > And there was another problem with one variable being
> > > > guint16, but the is_option casts it back to guint8. We can't really have
> > > > that. Once you start casting on that scale the compiler will not warn
> > > > you about type mismatches or if the value of argument is too big for its
> > > > type.
> > >
> > > Can you please let me know which git commit this fix you made was? I
> > > want to review it because all of the option types should only be a byte
> > > anyway, so I am trying to figure out if there was a mistake somewhere
> > > where we were using is_option to examine a 16 bit value. I searched
> > > through the git log and can't figure out where this change was. I
> > > can see where you changed the option type we are comparing to a regular
> > > guint to avoid compiler problems, but not the other issue you mentioned.
> >
> > I had a second look at these. It is the is_proto_handler actually and
> > not the is_option. However that thing applies here. A helper function to
> > find that handle would be better then manually coding g_list_find_custom
> > in the functions.
>
> so is_proto_handler was casting a 16 bit value to an 8 bit value? Or are you
> just complaining about having g_list_find_custom in the routines. It would
> really be easier on me to understand what you are trying to tell me if you
> you posted your patches to the list next time.
I expect you to ensure that your patches compile on 32-bit systems. And
also that they work on 32-bit and 64-bit systems. In addition I expect
that little endian and big endian works smoothly.
In general I don't wanna have casting in the source since it is a
potential trap for errors. Without casting the compiler will warn us if
we make mistakes, without we run into troubles. Especially with the
different pointer sizes it is important to not cast.
So in this specific cases, I think the usage of g_list_find_custom is
not a good idea. Manually walking this in a helper function and ensuring
that the variable and parameters types are enforced.
In short summary:
1) No casting if not really really needed. Think twice before adding a
casting to the source code.
2) Think about your optimization and understand what you are trying to
optimize. Simple code flow is preferred. Only in hot path we should
attempt to optimize manually and then it needs to be documented in the
source code itself. Otherwise lets GCC do it for us. Walking the GLib
list manually is sometimes a lot simpler to read than trying to use
foreach type functions.
3) No variable initialization on declaration. There are a few exceptions
when it makes sense. However the general rule is not to do it. We want
the compiler to warn us about variables that we might use uninitialized.
In most cases this indicates a mistake in the code flow and that the
code is too complex.
Regards
Marcel
next prev parent reply other threads:[~2010-03-23 19:07 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-23 0:05 [PATCH 0/6] PPP Patches v3 Kristen Carlson Accardi
2010-03-23 0:05 ` [PATCH 1/6] Basic PPP protocol support Kristen Carlson Accardi
2010-03-23 0:05 ` [PATCH 2/6] Generic PPP control " Kristen Carlson Accardi
2010-03-23 0:05 ` [PATCH 3/6] PPP LCP support Kristen Carlson Accardi
2010-03-23 0:05 ` [PATCH 4/6] CHAP with MD5 authentication support Kristen Carlson Accardi
2010-03-23 0:06 ` [PATCH 5/6] IP support for PPP Kristen Carlson Accardi
2010-03-23 0:06 ` [PATCH 6/6] Add PPP option to gsmdial Kristen Carlson Accardi
2010-03-23 5:30 ` Gustavo F. Padovan
2010-03-23 6:30 ` Marcel Holtmann
2010-03-23 0:32 ` [PATCH 0/6] PPP Patches v3 Marcel Holtmann
2010-03-23 2:22 ` Marcel Holtmann
2010-03-23 3:22 ` Kristen Carlson Accardi
2010-03-23 3:47 ` Marcel Holtmann
2010-03-23 4:07 ` Kristen Carlson Accardi
2010-03-23 4:51 ` Marcel Holtmann
2010-03-23 6:14 ` Kristen Carlson Accardi
2010-03-23 6:45 ` Marcel Holtmann
2010-03-23 17:16 ` Kristen Carlson Accardi
2010-03-23 17:34 ` Kristen Carlson Accardi
2010-03-23 17:56 ` Marcel Holtmann
2010-03-23 18:26 ` Kristen Carlson Accardi
2010-03-23 18:37 ` Denis Kenzior
2010-03-23 19:07 ` Marcel Holtmann [this message]
2010-03-23 3:56 ` Kristen Carlson Accardi
2010-03-23 12:34 ` =?unknown-8bit?q?R=C3=A9mi?= Denis-Courmont
2010-03-23 12:49 ` Marcel Holtmann
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=1269371241.11714.99.camel@localhost.localdomain \
--to=marcel@holtmann.org \
--cc=ofono@ofono.org \
/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.