Finalized (not tested!)
This commit is contained in:
		@@ -36,7 +36,7 @@ static cell AMX_NATIVE_CALL regex_match(AMX *amx, cell *params)
 | 
				
			|||||||
		const char *err = x->mError;
 | 
							const char *err = x->mError;
 | 
				
			||||||
		*eOff = x->mErrorOffset;
 | 
							*eOff = x->mErrorOffset;
 | 
				
			||||||
		MF_SetAmxString(amx, params[4], err?err:"unknown", params[5]);
 | 
							MF_SetAmxString(amx, params[4], err?err:"unknown", params[5]);
 | 
				
			||||||
		return 0;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int e = x->Match(str);
 | 
						int e = x->Match(str);
 | 
				
			||||||
@@ -46,7 +46,11 @@ static cell AMX_NATIVE_CALL regex_match(AMX *amx, cell *params)
 | 
				
			|||||||
		cell *res = MF_GetAmxAddr(amx, params[3]);
 | 
							cell *res = MF_GetAmxAddr(amx, params[3]);
 | 
				
			||||||
		*res = x->mErrorOffset;
 | 
							*res = x->mErrorOffset;
 | 
				
			||||||
		x->Clear();
 | 
							x->Clear();
 | 
				
			||||||
		return -1;
 | 
							return -2;
 | 
				
			||||||
 | 
						} else if (e == 0) {
 | 
				
			||||||
 | 
							*res = 0;
 | 
				
			||||||
 | 
							x->Clear();
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		cell *res = MF_GetAmxAddr(amx, params[3]);
 | 
							cell *res = MF_GetAmxAddr(amx, params[3]);
 | 
				
			||||||
		*res = x->mSubStrings;
 | 
							*res = x->mSubStrings;
 | 
				
			||||||
@@ -78,9 +82,27 @@ static cell AMX_NATIVE_CALL regex_substr(AMX *amx, cell *params)
 | 
				
			|||||||
	return 1;
 | 
						return 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static cell AMX_NATIVE_CALL regex_free(AMX *amx, cell *params)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						cell *c = MF_GetAmxAddr(amx, params[1]);
 | 
				
			||||||
 | 
						int id = *c;
 | 
				
			||||||
 | 
						*c = 0;
 | 
				
			||||||
 | 
						if (id >= (int)PEL.size() || id < 0 || PEL[id]->isFree())
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							MF_LogError(amx, AMX_ERR_NATIVE, "Invalid regex handle %d", id);
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						RegEx *x = PEL[id];
 | 
				
			||||||
 | 
						x->Clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AMX_NATIVE_INFO regex_Natives[] = {
 | 
					AMX_NATIVE_INFO regex_Natives[] = {
 | 
				
			||||||
	{"regex_match",				regex_match},
 | 
						{"regex_match",				regex_match},
 | 
				
			||||||
	{"regex_substr",			regex_substr},
 | 
						{"regex_substr",			regex_substr},
 | 
				
			||||||
 | 
						{"regex_free",				regex_free},
 | 
				
			||||||
	{NULL,						NULL},
 | 
						{NULL,						NULL},
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user