diff mplayer.c @ 17929:6fe95ee39422

Fix osd_show_msg alignment and make sure msg strings get properly 0 terminated. Thanks to Jonas Jermann (jjermann _At_ gmx _Dot_ net) for the report.
author albeu
date Thu, 23 Mar 2006 15:17:23 +0000
parents e0f20946e398
children 3fe3b2b3a6ce
line wrap: on
line diff
--- a/mplayer.c	Thu Mar 23 01:22:43 2006 +0000
+++ b/mplayer.c	Thu Mar 23 15:17:23 2006 +0000
@@ -1091,6 +1091,7 @@
 static void set_osd_msg(int id, int level, int time, char* fmt, ...) {
     mp_osd_msg_t *msg,*last=NULL;
     va_list va;
+    int r;
    
     // look if the id is already in the stack
     for(msg = osd_msg_stack ; msg && msg->id != id ;
@@ -1107,8 +1108,9 @@
     }
     // write the msg
     va_start(va,fmt);
-    vsnprintf(msg->msg, 63, fmt, va);
+    r = vsnprintf(msg->msg, 64, fmt, va);
     va_end(va);
+    if(r >= 64) msg->msg[63] = 0;
     // set id and time
     msg->id = id;
     msg->level = level;
@@ -3881,7 +3883,7 @@
 	  rm_osd_msg(OSD_MSG_OSD_STATUS);
     } break;
     case MP_CMD_OSD_SHOW_TEXT :  {
-      set_osd_msg(OSD_MSG_TEXT,1,osd_duration,"%64s",cmd->args[0].v.s);
+      set_osd_msg(OSD_MSG_TEXT,1,osd_duration,"%-.63s",cmd->args[0].v.s);
     } break;
     case MP_CMD_LOADFILE : {
       play_tree_t* e = play_tree_new();