[PATCH 1/4] zero-initialize object_info structs

2013-07-07 Thread Jeff King
The sha1_object_info_extended function expects the caller to
provide a struct object_info which contains pointers to
query items that will be filled in. The purpose of
providing pointers rather than storing the response directly
in the struct is so that callers can choose not to incur the
expense in finding particular fields that they do not care
about.

Right now the only query item is sizep, and all callers
set it explicitly to choose whether or not to query it; they
can then leave the rest of the struct uninitialized.

However, as we add new query items, each caller will have to
be updated to explicitly turn off the new ones (by setting
them to NULL).  Instead, let's teach each caller to
zero-initialize the struct, so that they do not have to
learn about each new query item added.

Signed-off-by: Jeff King p...@peff.net
---
Obviously I plan to add a new query type in the next patch, but this
initialization is probably a reasonable thing to be doing anyway.

 sha1_file.c | 2 +-
 streaming.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/sha1_file.c b/sha1_file.c
index 0af19c0..de06a97 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -2428,7 +2428,7 @@ int sha1_object_info(const unsigned char *sha1, unsigned 
long *sizep)
 
 int sha1_object_info(const unsigned char *sha1, unsigned long *sizep)
 {
-   struct object_info oi;
+   struct object_info oi = {0};
 
oi.sizep = sizep;
return sha1_object_info_extended(sha1, oi);
diff --git a/streaming.c b/streaming.c
index cabcd9d..cac282f 100644
--- a/streaming.c
+++ b/streaming.c
@@ -135,7 +135,7 @@ struct git_istream *open_istream(const unsigned char *sha1,
 struct stream_filter *filter)
 {
struct git_istream *st;
-   struct object_info oi;
+   struct object_info oi = {0};
const unsigned char *real = lookup_replace_object(sha1);
enum input_source src = istream_source(real, type, oi);
 
-- 
1.8.3.rc3.24.gec82cb9

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/4] zero-initialize object_info structs

2013-07-07 Thread Junio C Hamano
Jeff King p...@peff.net writes:

 Obviously I plan to add a new query type in the next patch, but this
 initialization is probably a reasonable thing to be doing anyway.

Yes. Thanks.


  sha1_file.c | 2 +-
  streaming.c | 2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)

 diff --git a/sha1_file.c b/sha1_file.c
 index 0af19c0..de06a97 100644
 --- a/sha1_file.c
 +++ b/sha1_file.c
 @@ -2428,7 +2428,7 @@ int sha1_object_info(const unsigned char *sha1, 
 unsigned long *sizep)
  
  int sha1_object_info(const unsigned char *sha1, unsigned long *sizep)
  {
 - struct object_info oi;
 + struct object_info oi = {0};
  
   oi.sizep = sizep;
   return sha1_object_info_extended(sha1, oi);
 diff --git a/streaming.c b/streaming.c
 index cabcd9d..cac282f 100644
 --- a/streaming.c
 +++ b/streaming.c
 @@ -135,7 +135,7 @@ struct git_istream *open_istream(const unsigned char 
 *sha1,
struct stream_filter *filter)
  {
   struct git_istream *st;
 - struct object_info oi;
 + struct object_info oi = {0};
   const unsigned char *real = lookup_replace_object(sha1);
   enum input_source src = istream_source(real, type, oi);
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html