@@ -51,16 +51,6 @@ foo (bar, )
needs to be coded in some other way.
-free and realloc
-----------------
-
-Some implementations crash upon attempts to free or realloc the null
-pointer. Thus if mem might be null, you need to write
-
- if (mem)
- free (mem);
-
-
Trigraphs
---------
--
1.7.4.1.21.g4cc62
From 6cea681646b53decf2feb9797be8df28e2e33d0a Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering@redhat.com>
Date: Mon, 3 Jan 2011 16:54:55 +0100
Subject: [PATCH 2/4] remove unnecessary if-before-free tests
git grep -l -z "$free *(" | xargs -0 useless-if-before-free -l --name="$free" \
| xargs -0 perl -0x3b -pi -e
's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s+('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\))/$2/s'
---
gcc/ada/initialize.c | 3 +-
gcc/c-family/c-format.c | 6 +-
gcc/calls.c | 15 +---
gcc/cfgcleanup.c | 3 +-
gcc/collect2.c | 3 +-
gcc/config/i386/gmm_malloc.h | 3 +-
gcc/config/i386/i386.c | 3 +-
gcc/config/mcore/mcore.c | 3 +-
gcc/coverage.c | 3 +-
gcc/cp/tree.c | 3 +-
gcc/cse.c | 6 +-
gcc/cselib.c | 3 +-
gcc/df-core.c | 15 +---
gcc/fortran/gfortranspec.c | 3 +-
gcc/function.c | 3 +-
gcc/gcc.c | 15 +---
gcc/gcov.c | 6 +-
gcc/gensupport.c | 12 +--
gcc/graphite-clast-to-gimple.c | 3 +-
gcc/graphite-sese-to-poly.c | 3 +-
gcc/haifa-sched.c | 3 +-
gcc/ipa-prop.c | 3 +-
gcc/ipa-pure-const.c | 3 +-
gcc/ipa-reference.c | 3 +-
gcc/ira-costs.c | 15 +---
gcc/ira.c | 9 +--
gcc/java/jcf-parse.c | 3 +-
gcc/matrix-reorg.c | 9 +--
gcc/prefix.c | 3 +-
gcc/profile.c | 3 +-
gcc/reload1.c | 12 +--
gcc/sched-deps.c | 3 +-
gcc/sel-sched-ir.c | 3 +-
gcc/sese.c | 6 +-
gcc/tree-data-ref.c | 6 +-
gcc/tree-eh.c | 3 +-
gcc/tree-ssa-coalesce.c | 3 +-
gcc/tree-ssa-live.c | 6 +-
gcc/tree-ssa-loop-ivopts.c | 6 +-
gcc/tree-ssa-pre.c | 3 +-
intl/bindtextdom.c | 3 +-
intl/loadmsgcat.c | 6 +-
intl/localcharset.c | 3 +-
libcpp/files.c | 3 +-
libcpp/init.c | 3 +-
libcpp/macro.c | 3 +-
libcpp/pch.c | 9 +--
libdecnumber/decNumber.c | 80 ++++++++++----------
libgfortran/intrinsics/move_alloc.c | 3 +-
libgfortran/io/fbuf.c | 3 +-
libgfortran/io/format.c | 3 +-
libgfortran/io/open.c | 3 +-
libgfortran/io/unit.c | 9 +--
libgfortran/io/unix.c | 3 +-
libgo/runtime/go-select.c | 6 +-
libiberty/cp-demint.c | 6 +-
libiberty/cplus-dem.c | 3 +-
libiberty/pex-common.c | 9 +--
libiberty/pex-msdos.c | 6 +-
libiberty/pex-win32.c | 24 ++----
libiberty/regex.c | 11 +--
libjava/classpath/native/fdlibm/dtoa.c | 3 +-
.../jni/gstreamer-peer/gst_native_pipeline.c | 6 +-
.../native/jni/java-lang/java_lang_VMProcess.c | 3 +-
libjava/gnu/classpath/natSystemProperties.cc | 3 +-
libjava/include/java-stack.h | 6 +-
libstdc++-v3/libsupc++/del_opnt.cc | 3 +-
lto-plugin/lto-plugin.c | 6 +-
zlib/contrib/minizip/unzip.c | 2 +-
zlib/contrib/minizip/zip.c | 2 +-
zlib/examples/gun.c | 2 +-
zlib/examples/gzappend.c | 2 +-
zlib/examples/gzjoin.c | 3 +-
zlib/gzio.c | 2 +-
74 files changed, 169 insertions(+), 292 deletions(-)
@@ -217,8 +217,7 @@ __gnat_initialize (void *eh ATTRIBUTE_UNUSED)
FindClose (hDir);
- if (dir != NULL)
- free (dir);
+ free (dir);
}
}
else
@@ -1107,10 +1107,8 @@ init_dollar_format_checking (int first_arg_num, tree params)
}
if (dollar_arguments_alloc < dollar_arguments_count)
{
- if (dollar_arguments_used)
- free (dollar_arguments_used);
- if (dollar_arguments_pointer_p)
- free (dollar_arguments_pointer_p);
+ free (dollar_arguments_used);
+ free (dollar_arguments_pointer_p);
dollar_arguments_alloc = dollar_arguments_count;
dollar_arguments_used = XNEWVEC (char, dollar_arguments_alloc);
dollar_arguments_pointer_p = XNEWVEC (char, dollar_arguments_alloc);
@@ -2549,8 +2549,7 @@ expand_call (tree exp, rtx target, int ignore)
highest_outgoing_arg_in_use = MAX (initial_highest_arg_in_use,
needed);
#endif
- if (stack_usage_map_buf)
- free (stack_usage_map_buf);
+ free (stack_usage_map_buf);
stack_usage_map_buf = XNEWVEC (char, highest_outgoing_arg_in_use);
stack_usage_map = stack_usage_map_buf;
@@ -2655,8 +2654,7 @@ expand_call (tree exp, rtx target, int ignore)
= stack_arg_under_construction;
stack_arg_under_construction = 0;
/* Make a new map for the new argument list. */
- if (stack_usage_map_buf)
- free (stack_usage_map_buf);
+ free (stack_usage_map_buf);
stack_usage_map_buf = XCNEWVEC (char, highest_outgoing_arg_in_use);
stack_usage_map = stack_usage_map_buf;
highest_outgoing_arg_in_use = 0;
@@ -3148,8 +3146,7 @@ expand_call (tree exp, rtx target, int ignore)
/* Free up storage we no longer need. */
for (i = 0; i < num_actuals; ++i)
- if (args[i].aligned_regs)
- free (args[i].aligned_regs);
+ free (args[i].aligned_regs);
insns = get_insns ();
end_sequence ();
@@ -3204,8 +3201,7 @@ expand_call (tree exp, rtx target, int ignore)
currently_expanding_call--;
- if (stack_usage_map_buf)
- free (stack_usage_map_buf);
+ free (stack_usage_map_buf);
return target;
}
@@ -3966,8 +3962,7 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value,
stack_usage_map = initial_stack_usage_map;
}
- if (stack_usage_map_buf)
- free (stack_usage_map_buf);
+ free (stack_usage_map_buf);
return value;
@@ -650,8 +650,7 @@ try_forward_edges (int mode, basic_block b)
ei_next (&ei);
}
- if (threaded_edges)
- free (threaded_edges);
+ free (threaded_edges);
return changed;
}
@@ -2092,8 +2092,7 @@ collect_execute (const char *prog, char **argv, const char *outname,
fatal (errmsg);
}
- if (response_arg)
- free (response_arg);
+ free (response_arg);
return pex;
}
@@ -67,8 +67,7 @@ _mm_malloc (size_t size, size_t align)
static __inline__ void
_mm_free (void * aligned_ptr)
{
- if (aligned_ptr)
- free (((void **) aligned_ptr) [-1]);
+ free (((void **) aligned_ptr) [-1]);
}
#endif /* _MM_MALLOC_H_INCLUDED */
@@ -4765,8 +4765,7 @@ ix86_valid_target_attribute_tree (tree args)
/* Free up memory allocated to hold the strings */
for (i = 0; i < IX86_FUNCTION_SPECIFIC_MAX; i++)
- if (option_strings[i])
- free (option_strings[i]);
+ free (option_strings[i]);
}
return t;
@@ -1978,8 +1978,7 @@ mcore_expand_prolog (void)
gcc_assert (GET_CODE (x) == SYMBOL_REF);
- if (mcore_current_function_name)
- free (mcore_current_function_name);
+ free (mcore_current_function_name);
mcore_current_function_name = xstrdup (XSTR (x, 0));
@@ -521,8 +521,7 @@ coverage_checksum_string (unsigned chksum, const char *string)
}
chksum = crc32_string (chksum, string);
- if (dup)
- free (dup);
+ free (dup);
return chksum;
}
@@ -1506,8 +1506,7 @@ cxx_printable_name_internal (tree decl, int v, bool translate)
gcc_assert (uid_ring[ring_counter] != DECL_UID (current_function_decl));
}
- if (print_ring[ring_counter])
- free (print_ring[ring_counter]);
+ free (print_ring[ring_counter]);
print_ring[ring_counter] = xstrdup (lang_decl_name (decl, v, translate));
uid_ring[ring_counter] = DECL_UID (decl);
@@ -796,8 +796,7 @@ init_cse_reg_info (unsigned int nregs)
}
/* Reallocate the table with NEW_SIZE entries. */
- if (cse_reg_info_table)
- free (cse_reg_info_table);
+ free (cse_reg_info_table);
cse_reg_info_table = XNEWVEC (struct cse_reg_info, new_size);
cse_reg_info_table_size = new_size;
cse_reg_info_table_first_uninitialized = 0;
@@ -6975,8 +6974,7 @@ delete_trivially_dead_insns (rtx insns, int nreg)
df_insn_rescan (insn);
}
}
- if (replacements)
- free (replacements);
+ free (replacements);
}
if (dump_file && ndead)
@@ -2429,8 +2429,7 @@ cselib_init (int record_what)
if (!reg_values || reg_values_size < cselib_nregs
|| (reg_values_size > 10 && reg_values_size > cselib_nregs * 4))
{
- if (reg_values)
- free (reg_values);
+ free (reg_values);
/* Some space for newly emit instructions so we don't end up
reallocating in between passes. */
reg_values_size = cselib_nregs + (63 + cselib_nregs) / 16;
@@ -811,10 +811,8 @@ rest_of_handle_df_finish (void)
dflow->problem->free_fun ();
}
- if (df->postorder)
- free (df->postorder);
- if (df->postorder_inverted)
- free (df->postorder_inverted);
+ free (df->postorder);
+ free (df->postorder_inverted);
free (df->hard_regs_live_count);
free (df);
df = NULL;
@@ -1183,10 +1181,8 @@ df_analyze (void)
bool everything;
int i;
- if (df->postorder)
- free (df->postorder);
- if (df->postorder_inverted)
- free (df->postorder_inverted);
+ free (df->postorder);
+ free (df->postorder_inverted);
df->postorder = XNEWVEC (int, last_basic_block);
df->postorder_inverted = XNEWVEC (int, last_basic_block);
df->n_blocks = post_order_compute (df->postorder, true, true);
@@ -1726,8 +1722,7 @@ df_check_cfg_clean (void)
static void
df_set_clean_cfg (void)
{
- if (saved_cfg)
- free (saved_cfg);
+ free (saved_cfg);
saved_cfg = df_compute_cfg_image ();
}
@@ -472,8 +472,7 @@ For more information about these matters, see the file named COPYING\n\n"));
int
lang_specific_pre_link (void)
{
- if (spec_file)
- free (spec_file);
+ free (spec_file);
else if (library)
do_spec ("%:include(libgfortran.spec)");
@@ -211,8 +211,7 @@ free_after_compilation (struct function *f)
prologue_insn_hash = NULL;
epilogue_insn_hash = NULL;
- if (crtl->emit.regno_pointer_align)
- free (crtl->emit.regno_pointer_align);
+ free (crtl->emit.regno_pointer_align);
memset (crtl, 0, sizeof (struct rtl_data));
f->eh = NULL;
@@ -4782,8 +4782,7 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
t->filename_length = temp_filename_length;
}
- if (saved_suffix)
- free (saved_suffix);
+ free (saved_suffix);
obstack_grow (&obstack, t->filename, t->filename_length);
delete_this_arg = 1;
@@ -6700,12 +6699,10 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
{
if (compare_debug)
{
- if (debug_check_temp_file[0])
- free (debug_check_temp_file[0]);
+ free (debug_check_temp_file[0]);
debug_check_temp_file[0] = NULL;
- if (debug_check_temp_file[1])
- free (debug_check_temp_file[1]);
+ free (debug_check_temp_file[1]);
debug_check_temp_file[1] = NULL;
}
@@ -6749,12 +6746,10 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
if (compare_debug)
{
- if (debug_check_temp_file[0])
- free (debug_check_temp_file[0]);
+ free (debug_check_temp_file[0]);
debug_check_temp_file[0] = NULL;
- if (debug_check_temp_file[1])
- free (debug_check_temp_file[1]);
+ free (debug_check_temp_file[1]);
debug_check_temp_file[1] = NULL;
}
}
@@ -661,10 +661,8 @@ create_file_names (const char *file_name)
int base;
/* Free previous file names. */
- if (bbg_file_name)
- free (bbg_file_name);
- if (da_file_name)
- free (da_file_name);
+ free (bbg_file_name);
+ free (da_file_name);
da_file_name = bbg_file_name = NULL;
bbg_file_time = 0;
bbg_stamp = 0;
@@ -350,8 +350,7 @@ identify_predicable_attribute (void)
if (p_true == NULL || strchr (++p_true, ',') != NULL)
{
error_with_line (elem->lineno, "attribute `predicable' is not a boolean");
- if (p_false)
- free (p_false);
+ free (p_false);
return;
}
p_true[-1] = '\0';
@@ -367,15 +366,13 @@ identify_predicable_attribute (void)
case CONST:
error_with_line (elem->lineno, "attribute `predicable' cannot be const");
- if (p_false)
- free (p_false);
+ free (p_false);
return;
default:
error_with_line (elem->lineno,
"attribute `predicable' must have a constant default");
- if (p_false)
- free (p_false);
+ free (p_false);
return;
}
@@ -387,8 +384,7 @@ identify_predicable_attribute (void)
{
error_with_line (elem->lineno,
"unknown value `%s' for `predicable' attribute", value);
- if (p_false)
- free (p_false);
+ free (p_false);
}
}
@@ -114,8 +114,7 @@ save_clast_name_index (htab_t index_table, const char *name, int index)
if (slot)
{
- if (*slot)
- free (*slot);
+ free (*slot);
*slot = new_clast_name_index (name, index);
}
@@ -190,8 +190,7 @@ free_data_refs_aux (VEC (data_reference_p, heap) *datarefs)
{
base_alias_pair *bap = (base_alias_pair *)(dr->aux);
- if (bap->alias_set)
- free (bap->alias_set);
+ free (bap->alias_set);
free (bap);
dr->aux = NULL;
@@ -5556,8 +5556,7 @@ haifa_finish_h_i_d (void)
FOR_EACH_VEC_ELT (haifa_insn_data_def, h_i_d, i, data)
{
- if (data->reg_pressure != NULL)
- free (data->reg_pressure);
+ free (data->reg_pressure);
for (use = data->reg_use_list; use != NULL; use = next)
{
next = use->next_insn_use;
@@ -1893,8 +1893,7 @@ ipa_free_all_edge_args (void)
void
ipa_free_node_params_substructures (struct ipa_node_params *info)
{
- if (info->params)
- free (info->params);
+ free (info->params);
memset (info, 0, sizeof (*info));
}
@@ -1667,8 +1667,7 @@ local_pure_const (void)
lang_hooks.decl_printable_name (current_function_decl,
2));
}
- if (l)
- free (l);
+ free (l);
if (changed)
return execute_fixup_cfg ();
else
@@ -913,8 +913,7 @@ propagate (void)
node_g->statics_written);
}
}
- if (node_info)
- free (node_info);
+ free (node_info);
if (node->aux)
{
free (node->aux);
@@ -1619,22 +1619,17 @@ free_ira_costs (void)
{
int i;
- if (init_cost != NULL)
- free (init_cost);
+ free (init_cost);
init_cost = NULL;
for (i = 0; i < MAX_RECOG_OPERANDS; i++)
{
- if (op_costs[i] != NULL)
- free (op_costs[i]);
- if (this_op_costs[i] != NULL)
- free (this_op_costs[i]);
+ free (op_costs[i]);
+ free (this_op_costs[i]);
op_costs[i] = this_op_costs[i] = NULL;
}
- if (temp_costs != NULL)
- free (temp_costs);
+ free (temp_costs);
temp_costs = NULL;
- if (cost_classes != NULL)
- free (cost_classes);
+ free (cost_classes);
cost_classes = NULL;
}
@@ -1150,10 +1150,8 @@ free_register_move_costs (void)
for (mode = 0; mode < MAX_MACHINE_MODE; mode++)
{
- if (ira_may_move_in_cost[mode] != NULL)
- free (ira_may_move_in_cost[mode]);
- if (ira_may_move_out_cost[mode] != NULL)
- free (ira_may_move_out_cost[mode]);
+ free (ira_may_move_in_cost[mode]);
+ free (ira_may_move_out_cost[mode]);
ira_register_move_cost[mode] = NULL;
ira_may_move_in_cost[mode] = NULL;
ira_may_move_out_cost[mode] = NULL;
@@ -3036,8 +3034,7 @@ build_insn_chain (void)
}
for (i = 0; i < (unsigned int) max_regno; i++)
- if (live_subregs[i])
- free (live_subregs[i]);
+ free (live_subregs[i]);
reload_insn_chain = c;
*p = NULL;
@@ -1843,8 +1843,7 @@ java_parse_file (void)
list = next;
}
- if (file_list != NULL)
- free (file_list);
+ free (file_list);
if (filename_count == 0)
warning (0, "no input file specified");
@@ -529,12 +529,9 @@ mat_free (void *e)
if (!mat)
return;
- if (mat->free_stmts)
- free (mat->free_stmts);
- if (mat->dim_hot_level)
- free (mat->dim_hot_level);
- if (mat->malloc_for_level)
- free (mat->malloc_for_level);
+ free (mat->free_stmts);
+ free (mat->dim_hot_level);
+ free (mat->malloc_for_level);
}
/* Find all potential matrices.
@@ -103,8 +103,7 @@ get_key_value (char *key)
if (prefix == 0)
prefix = std_prefix;
- if (temp)
- free (temp);
+ free (temp);
return prefix;
}
@@ -828,8 +828,7 @@ compute_value_histograms (histogram_values values)
}
for (t = 0; t < GCOV_N_VALUE_COUNTERS; t++)
- if (histogram_counts[t])
- free (histogram_counts[t]);
+ free (histogram_counts[t]);
}
/* The entry basic block will be moved around so that it has index=1,
@@ -4206,19 +4206,15 @@ free_reg_equiv (void)
{
int i;
- if (reg_equiv_constant)
- free (reg_equiv_constant);
- if (reg_equiv_invariant)
- free (reg_equiv_invariant);
+ free (reg_equiv_constant);
+ free (reg_equiv_invariant);
reg_equiv_constant = 0;
reg_equiv_invariant = 0;
VEC_free (rtx, gc, reg_equiv_memory_loc_vec);
reg_equiv_memory_loc = 0;
- if (offsets_known_at)
- free (offsets_known_at);
- if (offsets_at)
- free (offsets_at);
+ free (offsets_known_at);
+ free (offsets_at);
offsets_at = 0;
offsets_known_at = 0;
@@ -3550,8 +3550,7 @@ free_deps (struct deps_desc *deps)
/* As we initialize reg_last lazily, it is possible that we didn't allocate
it at all. */
- if (deps->reg_last)
- free (deps->reg_last);
+ free (deps->reg_last);
deps->reg_last = NULL;
deps = NULL;
@@ -580,8 +580,7 @@ fence_clear (fence_t f)
gcc_assert ((s != NULL && dc != NULL && tc != NULL)
|| (s == NULL && dc == NULL && tc == NULL));
- if (s != NULL)
- free (s);
+ free (s);
if (dc != NULL)
delete_deps_context (dc);
@@ -449,8 +449,7 @@ set_rename (htab_t rename_map, tree old_name, tree expr)
if (!slot)
return;
- if (*slot)
- free (*slot);
+ free (*slot);
*slot = new_rename_map_elt (old_name, expr);
}
@@ -676,8 +675,7 @@ if_region_set_false_region (ifsese if_region, sese region)
SESE_EXIT (region) = false_edge;
- if (if_region->false_region)
- free (if_region->false_region);
+ free (if_region->false_region);
if_region->false_region = region;
if (slot)
@@ -5085,11 +5085,9 @@ free_rdg (struct graph *rdg)
struct graph_edge *e;
for (e = v->succ; e; e = e->succ_next)
- if (e->data)
- free (e->data);
+ free (e->data);
- if (v->data)
- free (v->data);
+ free (v->data);
}
htab_delete (rdg->indices);
@@ -1617,8 +1617,7 @@ lower_try_finally (struct leh_state *state, gimple tp)
}
VEC_free (tree, heap, this_tf.dest_array);
- if (this_tf.goto_queue)
- free (this_tf.goto_queue);
+ free (this_tf.goto_queue);
if (this_tf.goto_queue_map)
pointer_map_destroy (this_tf.goto_queue_map);
@@ -242,8 +242,7 @@ delete_coalesce_list (coalesce_list_p cl)
{
gcc_assert (cl->cost_one_list == NULL);
htab_delete (cl->list);
- if (cl->sorted)
- free (cl->sorted);
+ free (cl->sorted);
gcc_assert (cl->num_sorted == 0);
free (cl);
}
@@ -157,10 +157,8 @@ delete_var_map (var_map map)
{
var_map_base_fini (map);
partition_delete (map->var_partition);
- if (map->partition_to_view)
- free (map->partition_to_view);
- if (map->view_to_partition)
- free (map->view_to_partition);
+ free (map->partition_to_view);
+ free (map->view_to_partition);
free (map);
}
@@ -6254,8 +6254,7 @@ free_loop_data (struct ivopts_data *data)
struct version_info *info;
info = ver_info (data, i);
- if (info->iv)
- free (info->iv);
+ free (info->iv);
info->iv = NULL;
info->has_nonlin_use = false;
info->preserve_biv = false;
@@ -6282,8 +6281,7 @@ free_loop_data (struct ivopts_data *data)
{
struct iv_cand *cand = iv_cand (data, i);
- if (cand->iv)
- free (cand->iv);
+ free (cand->iv);
if (cand->depends_on)
BITMAP_FREE (cand->depends_on);
free (cand);
@@ -580,8 +580,7 @@ phi_trans_add (pre_expr e, pre_expr v, basic_block pred)
slot = htab_find_slot_with_hash (phi_translate_table, new_pair,
new_pair->hashcode, INSERT);
- if (*slot)
- free (*slot);
+ free (*slot);
*slot = (void *) new_pair;
}
@@ -204,8 +204,7 @@ set_binding_values (domainname, dirnamep, codesetp)
if (__builtin_expect (result != NULL, 1))
{
- if (binding->codeset != NULL)
- free (binding->codeset);
+ free (binding->codeset);
binding->codeset = result;
binding->codeset_cntr++;
@@ -1273,8 +1273,7 @@ _nl_load_domain (domain_file, domainbinding)
/* This is an invalid revision. */
invalid:
/* This is an invalid .mo file. */
- if (domain->malloced)
- free (domain->malloced);
+ free (domain->malloced);
#ifdef HAVE_MMAP
if (use_mmap)
munmap ((caddr_t) data, size);
@@ -1307,8 +1306,7 @@ _nl_unload_domain (domain)
_nl_free_domain_conv (domain);
- if (domain->malloced)
- free (domain->malloced);
+ free (domain->malloced);
# ifdef _POSIX_MAPPED_FILES
if (domain->use_mmap)
@@ -199,8 +199,7 @@ get_charset_aliases ()
}
}
- if (file_name != NULL)
- free (file_name);
+ free (file_name);
#else
@@ -996,8 +996,7 @@ make_cpp_file (cpp_reader *pfile, cpp_dir *dir, const char *fname)
static void
destroy_cpp_file (_cpp_file *file)
{
- if (file->buffer_start)
- free ((void *) file->buffer_start);
+ free ((void *) file->buffer_start);
free ((void *) file->name);
free (file);
}
@@ -258,8 +258,7 @@ cpp_destroy (cpp_reader *pfile)
while (CPP_BUFFER (pfile) != NULL)
_cpp_pop_buffer (pfile);
- if (pfile->out.base)
- free (pfile->out.base);
+ free (pfile->out.base);
if (pfile->macro_buffer)
{
@@ -1064,8 +1064,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, macro_arg
/* Free the expanded arguments. */
for (i = 0; i < macro->paramc; i++)
- if (args[i].expanded)
- free (args[i].expanded);
+ free (args[i].expanded);
push_ptoken_context (pfile, node, buff, first, dest - first);
}
@@ -713,12 +713,9 @@ cpp_valid_state (cpp_reader *r, const char *name, int fd)
return -1;
fail:
- if (namebuf != NULL)
- free (namebuf);
- if (undeftab != NULL)
- free (undeftab);
- if (nl.defs != NULL)
- free (nl.defs);
+ free (namebuf);
+ free (undeftab);
+ free (nl.defs);
return 1;
}
@@ -711,7 +711,7 @@ decNumber * decNumberFromString(decNumber *dn, const char chars[],
/* decNumberShow(dn); */
} while(0); /* [for break] */
- if (allocres!=NULL) free(allocres); /* drop any storage used */
+ free(allocres); /* drop any storage used */
if (status!=0) decStatus(dn, status, set);
return dn;
} /* decNumberFromString */
@@ -970,8 +970,8 @@ decNumber * decNumberCompareTotalMag(decNumber *res, const decNumber *lhs,
decCompareOp(res, lhs, rhs, set, COMPTOTAL, &status);
} while(0); /* end protected */
- if (allocbufa!=NULL) free(allocbufa); /* drop any storage used */
- if (allocbufb!=NULL) free(allocbufb); /* .. */
+ free(allocbufa); /* drop any storage used */
+ free(allocbufb); /* .. */
if (status!=0) decStatus(res, status, set);
return res;
} /* decNumberCompareTotalMag */
@@ -1074,7 +1074,7 @@ decNumber * decNumberExp(decNumber *res, const decNumber *rhs,
} while(0); /* end protected */
#if DECSUBSET
- if (allocrhs !=NULL) free(allocrhs); /* drop any storage used */
+ free(allocrhs); /* drop any storage used */
#endif
/* apply significant status */
if (status!=0) decStatus(res, status, set);
@@ -1169,7 +1169,7 @@ decNumber * decNumberFMA(decNumber *res, const decNumber *lhs,
decAddOp(res, acc, fhs, set, 0, &status);
} while(0); /* end protected */
- if (allocbufa!=NULL) free(allocbufa); /* drop any storage used */
+ free(allocbufa); /* drop any storage used */
if (status!=0) decStatus(res, status, set);
#if DECCHECK
decCheckInexact(res, set);
@@ -1296,7 +1296,7 @@ decNumber * decNumberLn(decNumber *res, const decNumber *rhs,
} while(0); /* end protected */
#if DECSUBSET
- if (allocrhs !=NULL) free(allocrhs); /* drop any storage used */
+ free(allocrhs); /* drop any storage used */
#endif
/* apply significant status */
if (status!=0) decStatus(res, status, set);
@@ -1509,10 +1509,10 @@ decNumber * decNumberLog10(decNumber *res, const decNumber *rhs,
decDivideOp(res, a, b, &aset, DIVIDE, &status); /* into result */
} while(0); /* [for break] */
- if (allocbufa!=NULL) free(allocbufa); /* drop any storage used */
- if (allocbufb!=NULL) free(allocbufb); /* .. */
+ free(allocbufa); /* drop any storage used */
+ free(allocbufb); /* .. */
#if DECSUBSET
- if (allocrhs !=NULL) free(allocrhs); /* .. */
+ free(allocrhs); /* .. */
#endif
/* apply significant status */
if (status!=0) decStatus(res, status, set);
@@ -2253,11 +2253,11 @@ decNumber * decNumberPower(decNumber *res, const decNumber *lhs,
#endif
} while(0); /* end protected */
- if (allocdac!=NULL) free(allocdac); /* drop any storage used */
- if (allocinv!=NULL) free(allocinv); /* .. */
+ free(allocdac); /* drop any storage used */
+ free(allocinv); /* .. */
#if DECSUBSET
- if (alloclhs!=NULL) free(alloclhs); /* .. */
- if (allocrhs!=NULL) free(allocrhs); /* .. */
+ free(alloclhs); /* .. */
+ free(allocrhs); /* .. */
#endif
if (status!=0) decStatus(res, status, set);
#if DECCHECK
@@ -2349,7 +2349,7 @@ decNumber * decNumberReduce(decNumber *res, const decNumber *rhs,
} while(0); /* end protected */
#if DECSUBSET
- if (allocrhs !=NULL) free(allocrhs); /* .. */
+ free(allocrhs); /* .. */
#endif
if (status!=0) decStatus(res, status, set);/* then report status */
return res;
@@ -3111,11 +3111,11 @@ decNumber * decNumberSquareRoot(decNumber *res, const decNumber *rhs,
decNumberCopy(res, a); /* a is now the result */
} while(0); /* end protected */
- if (allocbuff!=NULL) free(allocbuff); /* drop any storage used */
- if (allocbufa!=NULL) free(allocbufa); /* .. */
- if (allocbufb!=NULL) free(allocbufb); /* .. */
+ free(allocbuff); /* drop any storage used */
+ free(allocbufa); /* .. */
+ free(allocbufb); /* .. */
#if DECSUBSET
- if (allocrhs !=NULL) free(allocrhs); /* .. */
+ free(allocrhs); /* .. */
#endif
if (status!=0) decStatus(res, status, set);/* then report status */
#if DECCHECK
@@ -4130,10 +4130,10 @@ static decNumber * decAddOp(decNumber *res, const decNumber *lhs,
}
} while(0); /* end protected */
- if (allocacc!=NULL) free(allocacc); /* drop any storage used */
+ free(allocacc); /* drop any storage used */
#if DECSUBSET
- if (allocrhs!=NULL) free(allocrhs); /* .. */
- if (alloclhs!=NULL) free(alloclhs); /* .. */
+ free(allocrhs); /* .. */
+ free(alloclhs); /* .. */
#endif
return res;
} /* decAddOp */
@@ -4782,11 +4782,11 @@ static decNumber * decDivideOp(decNumber *res,
#endif
} while(0); /* end protected */
- if (varalloc!=NULL) free(varalloc); /* drop any storage used */
- if (allocacc!=NULL) free(allocacc); /* .. */
+ free(varalloc); /* drop any storage used */
+ free(allocacc); /* .. */
#if DECSUBSET
- if (allocrhs!=NULL) free(allocrhs); /* .. */
- if (alloclhs!=NULL) free(alloclhs); /* .. */
+ free(allocrhs); /* .. */
+ free(alloclhs); /* .. */
#endif
return res;
} /* decDivideOp */
@@ -5127,14 +5127,14 @@ static decNumber * decMultiplyOp(decNumber *res, const decNumber *lhs,
decFinish(res, set, &residue, status); /* final cleanup */
} while(0); /* end protected */
- if (allocacc!=NULL) free(allocacc); /* drop any storage used */
+ free(allocacc); /* drop any storage used */
#if DECSUBSET
- if (allocrhs!=NULL) free(allocrhs); /* .. */
- if (alloclhs!=NULL) free(alloclhs); /* .. */
+ free(allocrhs); /* .. */
+ free(alloclhs); /* .. */
#endif
#if FASTMUL
- if (allocrhi!=NULL) free(allocrhi); /* .. */
- if (alloclhi!=NULL) free(alloclhi); /* .. */
+ free(allocrhi); /* .. */
+ free(alloclhi); /* .. */
#endif
return res;
} /* decMultiplyOp */
@@ -5483,9 +5483,9 @@ decNumber * decExpOp(decNumber *res, const decNumber *rhs,
decFinish(res, set, &residue, status); /* cleanup/set flags */
} while(0); /* end protected */
- if (allocrhs !=NULL) free(allocrhs); /* drop any storage used */
- if (allocbufa!=NULL) free(allocbufa); /* .. */
- if (allocbuft!=NULL) free(allocbuft); /* .. */
+ free(allocrhs); /* drop any storage used */
+ free(allocbufa); /* .. */
+ free(allocbuft); /* .. */
/* [status is handled by caller] */
return res;
} /* decExpOp */
@@ -5794,8 +5794,8 @@ decNumber * decLnOp(decNumber *res, const decNumber *rhs,
decFinish(res, set, &residue, status); /* cleanup/set flags */
} while(0); /* end protected */
- if (allocbufa!=NULL) free(allocbufa); /* drop any storage used */
- if (allocbufb!=NULL) free(allocbufb); /* .. */
+ free(allocbufa); /* drop any storage used */
+ free(allocbufb); /* .. */
/* [status is handled by caller] */
return res;
} /* decLnOp */
@@ -5959,8 +5959,8 @@ static decNumber * decQuantizeOp(decNumber *res, const decNumber *lhs,
} while(0); /* end protected */
#if DECSUBSET
- if (allocrhs!=NULL) free(allocrhs); /* drop any storage used */
- if (alloclhs!=NULL) free(alloclhs); /* .. */
+ free(allocrhs); /* drop any storage used */
+ free(alloclhs); /* .. */
#endif
return res;
} /* decQuantizeOp */
@@ -6142,8 +6142,8 @@ decNumber * decCompareOp(decNumber *res, const decNumber *lhs,
}
}
#if DECSUBSET
- if (allocrhs!=NULL) free(allocrhs); /* free any storage used */
- if (alloclhs!=NULL) free(alloclhs); /* .. */
+ free(allocrhs); /* free any storage used */
+ free(alloclhs); /* .. */
#endif
return res;
} /* decCompareOp */
@@ -6277,7 +6277,7 @@ static Int decUnitCompare(const Unit *a, Int alength,
result=(*u==0 ? 0 : +1);
}
/* clean up and return the result */
- if (allocacc!=NULL) free(allocacc); /* drop any storage used */
+ free(allocacc); /* drop any storage used */
return result;
} /* decUnitCompare */
@@ -37,8 +37,7 @@ move_alloc (gfc_array_char * from, gfc_array_char * to)
{
int i;
- if (to->data)
- free (to->data);
+ free (to->data);
for (i = 0; i < GFC_DESCRIPTOR_RANK (from); i++)
{
@@ -51,8 +51,7 @@ fbuf_destroy (gfc_unit * u)
{
if (u->fbuf == NULL)
return;
- if (u->fbuf->buf)
- free (u->fbuf->buf);
+ free (u->fbuf->buf);
free (u->fbuf);
u->fbuf = NULL;
}
@@ -149,8 +149,7 @@ save_parsed_format (st_parameter_dt *dtp)
free_format_data (u->format_hash_table[hash].hashed_fmt);
u->format_hash_table[hash].hashed_fmt = NULL;
- if (u->format_hash_table[hash].key != NULL)
- free (u->format_hash_table[hash].key);
+ free (u->format_hash_table[hash].key);
u->format_hash_table[hash].key = get_mem (dtp->format_len);
memcpy (u->format_hash_table[hash].key, dtp->format, dtp->format_len);
@@ -689,8 +689,7 @@ already_open (st_parameter_open *opp, gfc_unit * u, unit_flags * flags)
}
u->s = NULL;
- if (u->file)
- free (u->file);
+ free (u->file);
u->file = NULL;
u->file_len = 0;
@@ -483,11 +483,9 @@ free_internal_unit (st_parameter_dt *dtp)
if (dtp->u.p.current_unit != NULL)
{
- if (dtp->u.p.current_unit->ls != NULL)
- free (dtp->u.p.current_unit->ls);
+ free (dtp->u.p.current_unit->ls);
- if (dtp->u.p.current_unit->s)
- free (dtp->u.p.current_unit->s);
+ free (dtp->u.p.current_unit->s);
destroy_unit_mutex (dtp->u.p.current_unit);
}
@@ -652,8 +650,7 @@ close_unit_1 (gfc_unit *u, int locked)
delete_unit (u);
- if (u->file)
- free (u->file);
+ free (u->file);
u->file = NULL;
u->file_len = 0;
@@ -849,8 +849,7 @@ mem_flush (unix_stream * s __attribute__ ((unused)))
static int
mem_close (unix_stream * s)
{
- if (s != NULL)
- free (s);
+ free (s);
return 0;
}
@@ -690,8 +690,7 @@ __go_select (size_t count, _Bool has_default,
continue;
}
- if (allocated_buffer != NULL)
- free (allocated_buffer);
+ free (allocated_buffer);
return ret;
}
@@ -703,8 +702,7 @@ __go_select (size_t count, _Bool has_default,
if (has_default)
{
/* Use the default clause. */
- if (allocated_buffer != NULL)
- free (allocated_buffer);
+ free (allocated_buffer);
return 0;
}
@@ -206,10 +206,8 @@ cplus_demangle_v3_components (const char *mangled, int options, void **mem)
malloc (di.num_subs * sizeof (struct demangle_component *)));
if (di.comps == NULL || di.subs == NULL)
{
- if (di.comps != NULL)
- free (di.comps);
- if (di.subs != NULL)
- free (di.subs);
+ free (di.comps);
+ free (di.subs);
return NULL;
}
@@ -1311,8 +1311,7 @@ delete_non_B_K_work_stuff (struct work_stuff *work)
int i;
for (i = 0; i < work->ntmpl_args; i++)
- if (work->tmpl_argvec[i])
- free ((char*) work->tmpl_argvec[i]);
+ free ((char*) work->tmpl_argvec[i]);
free ((char*) work->tmpl_argvec);
work->tmpl_argvec = NULL;
@@ -623,12 +623,9 @@ pex_free (struct pex_obj *obj)
if (obj->next_input_name_allocated)
free (obj->next_input_name);
- if (obj->children != NULL)
- free (obj->children);
- if (obj->status != NULL)
- free (obj->status);
- if (obj->time != NULL)
- free (obj->time);
+ free (obj->children);
+ free (obj->status);
+ free (obj->time);
if (obj->remove_count > 0)
{
@@ -310,10 +310,8 @@ pex_msdos_cleanup (struct pex_obj *obj)
ms = (struct pex_msdos *) obj->sysdep;
for (i = 0; i < PEX_MSDOS_FILE_COUNT; ++i)
- if (msdos->files[i] != NULL)
- free (msdos->files[i]);
- if (msdos->statuses != NULL)
- free (msdos->statuses);
+ free (msdos->files[i]);
+ free (msdos->statuses);
free (msdos);
obj->sysdep = NULL;
}
@@ -210,10 +210,8 @@ mingw_rootify (const char *executable)
if (!namebuf || !foundbuf)
{
RegCloseKey (hKey);
- if (namebuf)
- free (namebuf);
- if (foundbuf)
- free (foundbuf);
+ free (namebuf);
+ free (foundbuf);
return executable;
}
@@ -315,8 +313,7 @@ msys_rootify (const char *executable)
return tack_on_executable (buf, executable);
/* failed */
- if (buf)
- free (buf);
+ free (buf);
return executable;
}
#endif
@@ -607,8 +604,7 @@ win32_spawn (const char *executable,
si,
pi))
{
- if (env_block)
- free (env_block);
+ free (env_block);
free (full_executable);
@@ -618,18 +614,14 @@ win32_spawn (const char *executable,
/* Clean up. */
CloseHandle (pi->hThread);
free (full_executable);
- if (env_block)
- free (env_block);
+ free (env_block);
return (pid_t) pi->hProcess;
error:
- if (env_block)
- free (env_block);
- if (cmdline)
- free (cmdline);
- if (full_executable)
- free (full_executable);
+ free (env_block);
+ free (cmdline);
+ free (full_executable);
return (pid_t) -1;
}
@@ -4970,7 +4970,7 @@ weak_alias (__re_search_2, re_search_2)
#ifdef MATCH_MAY_ALLOCATE
# define FREE_VAR(var) if (var) REGEX_FREE (var); var = NULL
#else
-# define FREE_VAR(var) if (var) free (var); var = NULL
+# define FREE_VAR(var) free (var); var = NULL
#endif
#ifdef WCHAR
@@ -8111,20 +8111,17 @@ weak_alias (__regerror, regerror)
void
regfree (regex_t *preg)
{
- if (preg->buffer != NULL)
- free (preg->buffer);
+ free (preg->buffer);
preg->buffer = NULL;
preg->allocated = 0;
preg->used = 0;
- if (preg->fastmap != NULL)
- free (preg->fastmap);
+ free (preg->fastmap);
preg->fastmap = NULL;
preg->fastmap_accurate = 0;
- if (preg->translate != NULL)
- free (preg->translate);
+ free (preg->translate);
preg->translate = NULL;
}
#ifdef _LIBC
@@ -916,6 +916,5 @@ _DEFUN (_dtoa,
l = next;
}
}
- if (reent._freelist)
- free (reent._freelist);
+ free (reent._freelist);
}
@@ -343,8 +343,7 @@ Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_create_1named_1pipe
if (mkfifo (jpipeline->priv->name, 0600) < 0)
{
- if (jpipeline->priv->name != NULL)
- free (jpipeline->priv->name);
+ free (jpipeline->priv->name);
return JNI_FALSE;
}
@@ -353,8 +352,7 @@ Java_gnu_javax_sound_sampled_gstreamer_lines_GstPipeline_create_1named_1pipe
if (name == NULL)
{
cpio_removeFile (jpipeline->priv->name);
- if (jpipeline->priv->name != NULL)
- free (jpipeline->priv->name);
+ free (jpipeline->priv->name);
return JNI_FALSE;
}
@@ -298,8 +298,7 @@ done:
while (num_strings > 0)
free (strings[--num_strings]);
free (strings);
- if (dir != NULL)
- free(dir);
+ free(dir);
/* Done */
return;
@@ -275,8 +275,7 @@ gnu::classpath::SystemProperties::insertSystemProperties (::java::util::Properti
if (buffer == NULL)
free (orig_buf);
}
- if (buffer != NULL)
- free (buffer);
+ free (buffer);
#endif /* HAVE_UNISTD_H */
#endif /* HAVE_GETCWD */
@@ -165,11 +165,9 @@ struct _Jv_AddrInfo
// they are.
#ifdef WIN32
- if (file_name)
- free ((void *)file_name);
+ free ((void *)file_name);
- if (sym_name)
- free ((void *)sym_name);
+ free ((void *)sym_name);
#endif /* WIN32 */
}
};
@@ -31,6 +31,5 @@ extern "C" void free (void *);
_GLIBCXX_WEAK_DEFINITION void
operator delete (void *ptr, const std::nothrow_t&) throw ()
{
- if (ptr)
- free (ptr);
+ free (ptr);
}
@@ -312,8 +312,7 @@ free_1 (void)
{
struct ld_plugin_symbol *s = &symtab->syms[j];
free (s->name);
- if (s->comdat_key)
- free (s->comdat_key);
+ free (s->comdat_key);
}
free (symtab->syms);
symtab->syms = NULL;
@@ -342,8 +341,7 @@ free_2 (void)
claimed_files = NULL;
num_claimed_files = 0;
- if (arguments_file_name)
- free (arguments_file_name);
+ free (arguments_file_name);
arguments_file_name = NULL;
}
@@ -78,7 +78,7 @@ woven in by Terry Thorsen 1/2003.
# define ALLOC(size) (malloc(size))
#endif
#ifndef TRYFREE
-# define TRYFREE(p) {if (p) free(p);}
+# define TRYFREE(p) {free(p);}
#endif
#define SIZECENTRALDIRITEM (0x2e)
@@ -50,7 +50,7 @@
# define ALLOC(size) (malloc(size))
#endif
#ifndef TRYFREE
-# define TRYFREE(p) {if (p) free(p);}
+# define TRYFREE(p) {free(p);}
#endif
/*
@@ -681,7 +681,7 @@ int main(int argc, char **argv)
outname[len] = 0;
}
ret = gunzip(&strm, *argv, outname, test);
- if (outname != NULL) free(outname);
+ free(outname);
if (ret) break;
} while (argv++, --argc);
else
@@ -453,7 +453,7 @@ local void gztack(char *name, int gd, z_stream *strm, int last)
/* clean up and return */
free(out);
- if (in != NULL) free(in);
+ free(in);
if (fd > 0) close(fd);
}
@@ -88,8 +88,7 @@ local void bclose(bin *in)
if (in != NULL) {
if (in->fd != -1)
close(in->fd);
- if (in->buf != NULL)
- free(in->buf);
+ free(in->buf);
free(in);
}
}
@@ -41,7 +41,7 @@ extern void free OF((voidpf ptr));
#endif
#define ALLOC(size) malloc(size)
-#define TRYFREE(p) {if (p) free(p);}
+#define TRYFREE(p) {free(p);}
static int const gz_magic[2] = {0x1f, 0x8b}; /* gzip magic header */
--
1.7.4.1.21.g4cc62
From 8e335c35418f25ec2bf7f009b57c0bad9db0130a Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering@redhat.com>
Date: Mon, 3 Jan 2011 16:55:58 +0100
Subject: [PATCH 3/4] remove unnecessary if-before-free tests (2 more, with braces)
git grep -l -z "$free *(" \
| xargs -0 useless-if-before-free -l --name="$free" \
| xargs -0 perl -0777 -pi -e \
's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s*\{\s*('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\);)\s*\}[^\n]*$/$2/gms'
---
libiberty/cplus-dem.c | 10 ++--------
libiberty/spaces.c | 5 +----
libjava/classpath/native/jni/classpath/jcl.c | 5 +----
3 files changed, 4 insertions(+), 16 deletions(-)
@@ -1215,14 +1215,8 @@ squangle_mop_up (struct work_stuff *work)
{
/* clean up the B and K type mangling types. */
forget_B_and_K_types (work);
- if (work -> btypevec != NULL)
- {
- free ((char *) work -> btypevec);
- }
- if (work -> ktypevec != NULL)
- {
- free ((char *) work -> ktypevec);
- }
+ free ((char *) work -> btypevec);
+ free ((char *) work -> ktypevec);
}
@@ -53,10 +53,7 @@ spaces (int count)
if (count > maxsize)
{
- if (buf)
- {
- free (buf);
- }
+ free (buf);
buf = (char *) malloc (count + 1);
if (buf == (char *) 0)
return 0;
@@ -167,10 +167,7 @@ JCL_realloc (JNIEnv * env, void *ptr, size_t size)
JNIEXPORT void JNICALL
JCL_free (JNIEnv * env __attribute__ ((unused)), void *p)
{
- if (p != NULL)
- {
- free (p);
- }
+ free (p);
}
JNIEXPORT const char *JNICALL
--
1.7.4.1.21.g4cc62
From 62edd1f37e2c06c2ace911d001a64794477866e3 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering@redhat.com>
Date: Mon, 3 Jan 2011 17:00:23 +0100
Subject: [PATCH 4/4] adjust for one erroneous (syntax-error-inducing) transformation
---
gcc/fortran/gfortranspec.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
@@ -473,7 +473,7 @@ int
lang_specific_pre_link (void)
{
free (spec_file);
- else if (library)
+ if (spec_file == NULL && library)
do_spec ("%:include(libgfortran.spec)");
return 0;
Hello, Someone asked me about this yesterday, and since I've been carrying this patch series for over a year -- it's not high priority -- this seems like a good time finally to post it. I've been removing if-before-free tests for a few years now. Here are some of the projects that have endured this janitorial work: git emacs glibc gnulib coreutils freeIPA libvirt util-linux-ng idutils openais corosync Over the course of those adventures, there has been plenty of discussion. If you'd like links with justification, I can provide several. When I started, I wrote a script to automate the process. Then I realized that coccinelle's spatch could do it, too, and more cleanly. Here's the script I use: http://git.sv.gnu.org/cgit/gnulib.git/tree/build-aux/useless-if-before-free Some projects run it via a "make syntax-check" rule that ensures no new offending test is introduced (see gnulib's maint.mk). Here's what I've done, to see if you're ok with it in principle. If so, let me know and I'll be happy to add proper ChangeLog entries. The 4th patch merely fixes a syntax error introduced by the transformation of the 3rd. For the sake of bisection, at least those two should be combined. I'm all for combining all four, if you prefer. From 0c74949d030103a9c33caaf5d753fe1bfe5792a5 Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyering@redhat.com> Date: Mon, 3 Jan 2011 16:52:37 +0100 Subject: [PATCH 1/4] don't encourage unnecessary use of if before free * README.Portability: Don't encourage people to write "if (foo) free (foo)". --- gcc/README.Portability | 10 ---------- 1 files changed, 0 insertions(+), 10 deletions(-) -- 1.7.4.1.21.g4cc62