kopia lustrzana https://gitlab.com/sane-project/backends
				
				
				
			Get rid of small memory leak when using 'scanimage -L'.
							rodzic
							
								
									86ee15cba9
								
							
						
					
					
						commit
						7e318fb164
					
				|  | @ -178,6 +178,13 @@ struct alias | |||
|     char *newname; | ||||
|   }; | ||||
| 
 | ||||
| /*
 | ||||
|  * List of available devices, allocated by sane_get_devices, released | ||||
|  * by sane_exit() | ||||
|  */ | ||||
| static const SANE_Device **devlist = NULL; | ||||
| static int devlist_size = 0, devlist_len = 0; | ||||
| 
 | ||||
| static struct alias *first_alias; | ||||
| static SANE_Auth_Callback auth_callback; | ||||
| static struct backend *first_backend; | ||||
|  | @ -584,6 +591,18 @@ sane_exit (void) | |||
|       free(alias->oldname); | ||||
|       free(alias); | ||||
|     } | ||||
| 
 | ||||
|   if (NULL != devlist) | ||||
|     { /* Release memory allocated by sane_get_devices(). */ | ||||
|       int i = 0; | ||||
|       while (devlist[i]) | ||||
|         free(devlist[i++]); | ||||
|       free(devlist); | ||||
| 
 | ||||
|       devlist = NULL; | ||||
|       devlist_size = 0; | ||||
|       devlist_len = 0; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /* Note that a call to get_devices() implies that we'll have to load
 | ||||
|  | @ -594,8 +613,6 @@ sane_exit (void) | |||
| SANE_Status | ||||
| sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only) | ||||
| { | ||||
|   static int devlist_size = 0, devlist_len = 0; | ||||
|   static const SANE_Device **devlist; | ||||
|   const SANE_Device **be_list; | ||||
|   struct backend *be; | ||||
|   SANE_Status status; | ||||
|  |  | |||
|  | @ -108,6 +108,7 @@ | |||
| #include "sane/sanei_config.h" | ||||
| #define V4L_CONFIG_FILE "v4l.conf" | ||||
| 
 | ||||
| static const SANE_Device ** devlist = NULL; | ||||
| static int num_devices; | ||||
| static V4L_Device * first_dev; | ||||
| static V4L_Scanner * first_handle; | ||||
|  | @ -179,6 +180,9 @@ attach (const char *devname, V4L_Device **devp) | |||
| { | ||||
|   V4L_Device * q; | ||||
| 
 | ||||
|   if (!devp) | ||||
|     return SANE_STATUS_INVAL; | ||||
| 
 | ||||
|   errno = 0; | ||||
| 
 | ||||
|   q = malloc (sizeof (*q)); | ||||
|  | @ -199,12 +203,8 @@ attach (const char *devname, V4L_Device **devp) | |||
|   first_dev = q; | ||||
| 
 | ||||
| 
 | ||||
|   if (devp) | ||||
|     *devp = q; | ||||
|   *devp = q; | ||||
|   return SANE_STATUS_GOOD; | ||||
| 
 | ||||
|   free (q); | ||||
|   return SANE_STATUS_INVAL; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -626,12 +626,17 @@ sane_exit (void) | |||
|       free ((void *) dev->sane.name); | ||||
|       free (dev); | ||||
|     } | ||||
| 
 | ||||
|   if (NULL != devlist) | ||||
|     { | ||||
|       free(devlist); | ||||
|       devlist = NULL; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| SANE_Status | ||||
| sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only) | ||||
| { | ||||
|   static const SANE_Device ** devlist = 0; | ||||
|   V4L_Device *dev; | ||||
|   int i; | ||||
| 
 | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 Petter Reinholdtsen
						Petter Reinholdtsen