/// <summary> /// Gets all Asar current warning. They're safe to keep for as long as you want. /// </summary> /// <returns>All Asar's warnings.</returns> public static Asarerror[] getwarnings() { int length = 0; Rawasarerror *ptr = asar_getwarnings(out length); return(cleanerrors(ptr, length)); }
private static Asarerror[] cleanerrors(Rawasarerror *ptr, int length) { Asarerror[] output = new Asarerror[length]; // Better create a new array // to avoid pointer erros, corruption and may other problems. for (int i = 0; i < length; i++) { output[i].Fullerrdata = Marshal.PtrToStringAnsi(ptr[i].fullerrdata); output[i].Rawerrdata = Marshal.PtrToStringAnsi(ptr[i].rawerrdata); output[i].Block = Marshal.PtrToStringAnsi(ptr[i].block); output[i].Filename = Marshal.PtrToStringAnsi(ptr[i].filename); output[i].Line = ptr[i].line; output[i].Callerfilename = Marshal.PtrToStringAnsi(ptr[i].callerfilename); output[i].Callerline = ptr[i].callerline; } return(output); }