diff --git a/windows.c b/windows.c index 3eeabb75..6b7f68c7 100644 --- a/windows.c +++ b/windows.c @@ -914,28 +914,42 @@ void Verbose_error_message(const char * message) { short clicked_button; int line; - int i; - char buffer[36]; // 35 characters + \0 + int last_space; + int nb_char; + char buffer[36]; Open_window(300,160,"Error!"); // Word-wrap the message - for (line=0; line < 10; line++) + for (line=0; line < 12 && *message!='\0'; line++) { - for (i=0;i<35 && *message!='\0';i++) + last_space = -1; + for (nb_char=0; nb_char<35 && message[nb_char]!='\0'; nb_char++) { - if (*message == '\n') + buffer[nb_char]=message[nb_char]; + if (message[nb_char] == ' ') { - message++; + last_space = nb_char; + } + else if (message[nb_char] == '\n') + { + last_space = nb_char; break; } - buffer[i]=*message; - message++; } - buffer[i]='\0'; + // Close line buffer + if (last_space == -1) + last_space = 34; + buffer[last_space]='\0'; + + // Print Print_in_window(10,20+line*8,buffer,MC_Black,MC_Light); - if (*message=='\0') - break; + + // Next line + message=message+last_space+1; + // Strip leading spaces + while (*message == ' ') + message++; } Window_set_normal_button(300/2-20,160-23,40,14,"OK",1,1,SDLK_RETURN); // 1