unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Problem report #47
@ 2006-04-30 16:46 Dan Nicolaescu
  2006-05-02 16:46 ` Dan Nicolaescu
  0 siblings, 1 reply; 2+ messages in thread
From: Dan Nicolaescu @ 2006-04-30 16:46 UTC (permalink / raw)



CID: 47
Checker: RESOURCE_LEAK (help)
File: emacs/lib-src/etags.c
Function: Perl_functions
Description: Returned without freeing storage "package"

4473 	static void
4474 	Perl_functions (inf)
4475 	     FILE *inf;
4476 	{

Event alloc_fn: Called allocation function "savestr" [model]
Event var_assign: Assigned variable "package" to storage returned from "savestr"
Also see events: [var_assign][leaked_storage]

4477 	  char *package = savestr ("main"); /* current package name */
4478 	  register char *cp;
4479 	

At conditional (1): "feof == 0" taking false path

4480 	  LOOP_ON_INPUT_LINES (inf, lb, cp)
4481 	    {
4482 	      skip_spaces(cp);
4483 	
4484 	      if (LOOKING_AT (cp, "package"))
4485 		{
4486 		  free (package);
4487 		  get_tag (cp, &package);
4488 		}
4489 	      else if (LOOKING_AT (cp, "sub"))
4490 		{
4491 		  char *pos;
4492 		  char *sp = cp;
4493 	
4494 		  while (!notinname (*cp))
4495 		    cp++;
4496 		  if (cp == sp)
4497 		    continue;		/* nothing found */
4498 		  if ((pos = etags_strchr (sp, ':')) != NULL
4499 		      && pos < cp && pos[1] == ':')
4500 		    /* The name is already qualified. */
4501 		    make_tag (sp, cp - sp, TRUE,
4502 			      lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
4503 		  else
4504 		    /* Qualify it. */
4505 		    {
4506 		      char savechar, *name;
4507 	
4508 		      savechar = *cp;
4509 		      *cp = '\0';
4510 		      name = concat (package, "::", sp);
4511 		      *cp = savechar;
4512 		      make_tag (name, strlen(name), TRUE,
4513 				lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
4514 		      free (name);
4515 		    }
4516 	 	}
4517 	       else if (globals)	/* only if we are tagging global vars */
4518 	 	{
4519 		  /* Skip a qualifier, if any. */
4520 		  bool qual = LOOKING_AT (cp, "my") || LOOKING_AT (cp, "local");
4521 	 	  /* After "my" or "local", but before any following paren or space. */
4522 		  char *varstart = cp;
4523 	
4524 	 	  if (qual		/* should this be removed?  If yes, how? */
4525 		      && (*cp == '$' || *cp == '@' || *cp == '%'))
4526 	 	    {
4527 	 	      varstart += 1;
4528 		      do
4529 	 		cp++;
4530 	 	      while (ISALNUM (*cp) || *cp == '_');
4531 	 	    }
4532 	 	  else if (qual)
4533 	 	    {
4534 	 	      /* Should be examining a variable list at this point;
4535 	 		 could insist on seeing an open parenthesis. */
4536 	 	      while (*cp != '\0' && *cp != ';' && *cp != '=' &&  *cp != ')')
4537 	 		cp++;
4538 	 	    }
4539 		  else
4540 		    continue;
4541 	
4542 	 	  make_tag (varstart, cp - varstart, FALSE,
4543 			    lb.buffer, cp - lb.buffer + 1, lineno, linecharno);
4544 		}
4545 	    }

Event leaked_storage: Returned without freeing storage "package"
Also see events: [alloc_fn][var_assign]

4546 	}

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Problem report #47
  2006-04-30 16:46 Problem report #47 Dan Nicolaescu
@ 2006-05-02 16:46 ` Dan Nicolaescu
  0 siblings, 0 replies; 2+ messages in thread
From: Dan Nicolaescu @ 2006-05-02 16:46 UTC (permalink / raw)


This was analyzed by Francesco Potorti`, so there's no need to look at it.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-05-02 16:46 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-04-30 16:46 Problem report #47 Dan Nicolaescu
2006-05-02 16:46 ` Dan Nicolaescu

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).