@@ -2034,45 +2034,40 @@ zend_result phar_detect_phar_fname_ext(const char *filename, size_t filename_len
20342034		}
20352035	}
20362036
2037- 	// TODO Use some sort of loop here instead of a goto 
20382037	pos  =  memchr (filename  +  1 , '.' , filename_len );
2039- next_extension :
2040- 	if  (!pos ) {
2041- 		return  FAILURE ;
2042- 	}
2043- 
2044- 	while  (pos  !=  filename  &&  (* (pos  -  1 ) ==  '/'  ||  * (pos  -  1 ) ==  '\0' )) {
2045- 		pos  =  memchr (pos  +  1 , '.' , filename_len  -  (pos  -  filename ) -  1 );
2046- 		if  (!pos ) {
2047- 			return  FAILURE ;
2038+ 	while  (pos ) {
2039+ 		while  (pos  !=  filename  &&  (* (pos  -  1 ) ==  '/'  ||  * (pos  -  1 ) ==  '\0' )) {
2040+ 			pos  =  memchr (pos  +  1 , '.' , filename_len  -  (pos  -  filename ) -  1 );
2041+ 			if  (!pos ) {
2042+ 				return  FAILURE ;
2043+ 			}
20482044		}
2049- 	}
20502045
2051- 	slash  =  memchr (pos , '/' , filename_len  -  (pos  -  filename ));
2046+ 		 slash  =  memchr (pos , '/' , filename_len  -  (pos  -  filename ));
20522047
2053- 	if  (!slash ) {
2054- 		/* this is a url like "phar://blah.phar" with no directory */ 
2055- 		* ext_str  =  pos ;
2056- 		* ext_len  =  strlen (pos );
2048+ 		 if  (!slash ) {
2049+ 			 /* this is a url like "phar://blah.phar" with no directory */ 
2050+ 			 * ext_str  =  pos ;
2051+ 			 * ext_len  =  strlen (pos );
20572052
2058- 		/* file extension must contain "phar" */ 
2059- 		return  phar_check_str (filename , * ext_str , * ext_len , executable , for_create );
2060- 	}
2053+ 			 /* file extension must contain "phar" */ 
2054+ 			 return  phar_check_str (filename , * ext_str , * ext_len , executable , for_create );
2055+ 		 }
20612056
2062- 	/* we've found an extension that ends at a directory separator */ 
2063- 	* ext_str  =  pos ;
2064- 	* ext_len  =  slash  -  pos ;
2057+ 		 /* we've found an extension that ends at a directory separator */ 
2058+ 		 * ext_str  =  pos ;
2059+ 		 * ext_len  =  slash  -  pos ;
20652060
2066- 	if  (phar_check_str (filename , * ext_str , * ext_len , executable , for_create ) ==  SUCCESS ) {
2067- 		return  SUCCESS ;
2068- 	}
2061+ 		 if  (phar_check_str (filename , * ext_str , * ext_len , executable , for_create ) ==  SUCCESS ) {
2062+ 			 return  SUCCESS ;
2063+ 		 }
20692064
2070- 	/* look for more extensions */ 
2071- 	pos  =  strchr (pos  +  1 , '.' );
2072- 	if  (pos ) {
2073- 		* ext_str  =  NULL ;
2074- 		* ext_len  =  0 ;
2075- 		goto  next_extension ; 
2065+ 		 /* look for more extensions */ 
2066+ 		 pos  =  strchr (pos  +  1 , '.' );
2067+ 		 if  (pos ) {
2068+ 			 * ext_str  =  NULL ;
2069+ 			 * ext_len  =  0 ;
2070+ 		} 
20762071	}
20772072
20782073	return  FAILURE ;
0 commit comments