[ros-dev] [ros-diffs] [greatlrd] 22718: Small clean up 1. Remove goto in the code, goto is slow and should be avoid. 2. reformat for adding {} around some code. 3. remove some NULL check after I did remove goto that is not longer need it.

Saveliy Tretiakov saveliyt at mail.ru
Fri Jun 30 19:53:23 CEST 2006


I don't like your changes to main(), you added a lot of code 
dublication, made it harder to read and maintain. This is repeated three 
times:
            DeleteCriticalSection(&LogListCs);
   
            // Close all log files.
            for(pLogf = LogListHead; pLogf; pLogf = ((PLOGFILE)pLogf)->Next)
            {
                LogfClose(pLogf);
            }
     
            HeapDestroy(MyHeap);

greatlrd at svn.reactos.org wrote:
> Author: greatlrd
> Date: Fri Jun 30 20:42:21 2006
> New Revision: 22718
>
> URL: http://svn.reactos.org/svn/reactos?rev=22718&view=rev
> Log:
> Small clean up
> 1. Remove goto in the code, goto is slow and should be avoid.
> 2. reformat for adding {} around some code.
> 3. remove some NULL check after I did remove goto that is not longer need it.  
>  
>
> Modified:
>     trunk/reactos/base/services/eventlog/eventlog.c
>
> Modified: trunk/reactos/base/services/eventlog/eventlog.c
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/services/eventlog/eventlog.c?rev=22718&r1=22717&r2=22718&view=diff
> ==============================================================================
> --- trunk/reactos/base/services/eventlog/eventlog.c (original)
> +++ trunk/reactos/base/services/eventlog/eventlog.c Fri Jun 30 20:42:21 2006
> @@ -61,7 +61,7 @@
>  	DWORD MaxValueLen, ValueLen, Type, ExpandedLen;
>  	WCHAR *Buf = NULL, *Expanded = NULL;
>  	LONG Result;
> -	BOOL ret = FALSE;
> +	BOOL ret = TRUE;
>  	PLOGFILE pLogf;
>  
>  	DPRINT("LoadLogFile: %S\n", LogName);
> @@ -88,12 +88,14 @@
>  	if(Result != ERROR_SUCCESS)
>  	{
>  		DPRINT1("RegQueryValueEx failed: %d\n", GetLastError());
> -		goto cleanup;
> +		HeapFree(MyHeap, 0, Buf);
> +	    return FALSE;
>  	}
>  	if(Type != REG_EXPAND_SZ && Type != REG_SZ)
>  	{
>  		DPRINT1("%S\\File - value of wrong type %x.\n", LogName, Type);
> -		goto cleanup;
> +		HeapFree(MyHeap, 0, Buf);
> +	    return FALSE;
>  	}
>  	
>  	ExpandedLen = ExpandEnvironmentStrings(Buf, NULL, 0);
> @@ -102,7 +104,8 @@
>  	if(!Expanded)
>  	{
>  		DPRINT1("Can't allocate heap!\n");
> -		goto cleanup;
> +		HeapFree(MyHeap, 0, Buf);
> +	    return FALSE;
>  	}
>  	
>  	ExpandEnvironmentStrings(Buf, Expanded, ExpandedLen);
> @@ -114,14 +117,11 @@
>  	if(pLogf == NULL)
>  	{
>  		DPRINT1("Failed to create %S!\n", Expanded);
> -		goto cleanup;
> -	}
> -
> -	ret = TRUE;
> -	
> -cleanup:
> +		ret = FALSE;
> +	}
> +	
>  	HeapFree(MyHeap, 0, Buf);
> -	if(Expanded) HeapFree(MyHeap, 0, Expanded);
> +	HeapFree(MyHeap, 0, Expanded);
>  	return ret;
>  }
>  	
> @@ -129,8 +129,7 @@
>  {
>  	LONG result;
>  	DWORD MaxLognameLen, LognameLen;
> -	WCHAR *Buf = NULL;
> -	BOOL ret = FALSE;
> +	WCHAR *Buf = NULL;	
>  	INT i;
>  	
>  	RegQueryInfoKey(eventlogKey, NULL, NULL, NULL, NULL, &MaxLognameLen, 
> @@ -143,7 +142,7 @@
>  	if(!Buf)
>  	{
>  		DPRINT1("Error: can't allocate heap!\n");
> -		return ret;
> +		return FALSE;
>  	}
>  	
>  	i = 0;
> @@ -159,7 +158,8 @@
>  		if(result != ERROR_SUCCESS) 
>  		{
>  			DPRINT1("Failed to open %S key.\n", Buf);
> -			goto cleanup;
> +			HeapFree(MyHeap, 0, Buf);
> +			return FALSE;
>  		}
>  		
>  		if(!LoadLogFile(SubKey, Buf))
> @@ -171,18 +171,14 @@
>  		i++;
>  	} 
>  
> -	ret = TRUE;
> -	
> -cleanup:
>  	HeapFree(MyHeap, 0, Buf);
> -	return ret;
> +	return TRUE;
>  }
>  
>  INT main()
>  {
>  	WCHAR LogPath[MAX_PATH];
> -	PLOGFILE pLogf;
> -	INT RetCode = 0;
> +	PLOGFILE pLogf;	
>  	LONG result;
>  	HKEY elogKey;
>  
> @@ -193,8 +189,15 @@
>  	if(MyHeap==NULL)
>  	{
>  		DPRINT1("FATAL ERROR, can't create heap.\n");
> -		RetCode = 1;
> -		goto bye_bye;
> +		
> +		DeleteCriticalSection(&LogListCs);	
> +		// Close all log files.
> +		for(pLogf = LogListHead; pLogf; pLogf = ((PLOGFILE)pLogf)->Next)
> +		{
> +			LogfClose(pLogf);
> +		}
> +
> +		return 1;
>  	}
>  	
>  	GetWindowsDirectory(LogPath, MAX_PATH);
> @@ -214,8 +217,17 @@
>  		if(result != ERROR_SUCCESS)
>  		{
>  			DPRINT1("Fatal error: can't open eventlog registry key.\n");
> -			RetCode = 1;
> -			goto bye_bye;
> +
> +			DeleteCriticalSection(&LogListCs);
> +	
> +			// Close all log files.
> +			for(pLogf = LogListHead; pLogf; pLogf = ((PLOGFILE)pLogf)->Next)
> +			{
> +			    LogfClose(pLogf);
> +			}
> +	 
> +			HeapDestroy(MyHeap);
> +			return 1;
>  		}
>  		
>  		LoadLogFiles(elogKey);
> @@ -223,16 +235,16 @@
>  
>      StartServiceCtrlDispatcher(ServiceTable);
>  
> -bye_bye:
>  	DeleteCriticalSection(&LogListCs);
>  	
>  	// Close all log files.
>  	for(pLogf = LogListHead; pLogf; pLogf = ((PLOGFILE)pLogf)->Next)
> +	{
>  		LogfClose(pLogf);
> +	}
>  	 
> -	if(MyHeap) HeapDestroy(MyHeap);
> -
> -    return RetCode;
> +	HeapDestroy(MyHeap);
> +    return 0;
>  }
>  
>  VOID EventTimeToSystemTime(DWORD EventTime, 
>
>
>
>   



More information about the Ros-dev mailing list