IMPLEMENTATION MODULE SDLUtils ; FROM SYSTEM IMPORT ADDRESS, ADR; FROM SDL2 IMPORT SDL_GetError; FROM libc IMPORT strlen, strncpy; PROCEDURE CStrToM2 (src: ADDRESS; VAR dst: ARRAY OF CHAR); VAR n: CARDINAL; BEGIN IF HIGH(dst) < 0 THEN RETURN END; IF src = NIL THEN dst[0] := 0C; RETURN END; (* strlen returns CSIZE_T; VAL converts without range check. *) n := VAL(CARDINAL, strlen(src)); IF n > HIGH(dst) THEN n := HIGH(dst) END; strncpy(ADR(dst), src, n); IF n <= HIGH(dst) THEN dst[n] := 0C END END CStrToM2; PROCEDURE GetErrorString (VAR buf: ARRAY OF CHAR); BEGIN CStrToM2(SDL_GetError(), buf) END GetErrorString; END SDLUtils.