Print this page
11506 smatch resync

Split Close
Expand all
Collapse all
          --- old/usr/src/tools/smatch/src/check_no_return.c
          +++ new/usr/src/tools/smatch/src/check_no_return.c
↓ open down ↓ 8 lines elided ↑ open up ↑
   9    9   * This program is distributed in the hope that it will be useful,
  10   10   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11   11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12   12   * GNU General Public License for more details.
  13   13   *
  14   14   * You should have received a copy of the GNU General Public License
  15   15   * along with this program; if not, see http://www.gnu.org/copyleft/gpl.txt
  16   16   */
  17   17  
  18   18  #include "smatch.h"
       19 +#include "smatch_slist.h"
  19   20  
  20   21  static int my_id;
  21   22  static int returned;
  22   23  
  23   24  static void match_return(struct expression *ret_value)
  24   25  {
  25   26          if (__inline_fn)
  26   27                  return;
  27   28          if (is_reachable())
  28   29                  returned = 1;
  29   30  }
  30   31  
  31   32  static void match_func_end(struct symbol *sym)
  32   33  {
  33   34          if (__inline_fn)
  34   35                  return;
       36 +        if (out_of_memory() || taking_too_long())
       37 +                return;
  35   38          if (!is_reachable() && !returned)
  36   39                  sm_info("info: add to no_return_funcs");
  37   40          returned = 0;
  38   41  }
  39   42  
  40   43  void check_no_return(int id)
  41   44  {
  42   45          if (!option_info)
  43   46                  return;
  44   47          my_id = id;
  45   48          add_hook(&match_return, RETURN_HOOK);
  46   49          add_hook(&match_func_end, END_FUNC_HOOK);
  47   50  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX