OSDN Git Service

fix buffer handling.
authorornse01 <ornse01@users.sourceforge.jp>
Sat, 5 May 2012 13:03:30 +0000 (13:03 +0000)
committerornse01 <ornse01@users.sourceforge.jp>
Sat, 5 May 2012 13:03:30 +0000 (13:03 +0000)
git-svn-id: http://svn.sourceforge.jp/svnroot/bchan/bchanf/trunk@476 20a0b8eb-f62a-4a12-8fe1-b598822500fb

src/tools/hmi_generator.rb

index 5766ac6..b50e7a1 100644 (file)
@@ -399,12 +399,41 @@ EXPORT W <%= window_name %>_get<%= self.name() %>text(<%= window_name %>_t *wind
 
 EXPORT W <%= window_name %>_cut<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len, Bool cut)
 {
-       return ccut_txt(window-><%= self.name() %>.id, len, str, cut == False ? 0 : 1);
+       W err;
+
+       err = ccut_txt(window-><%= self.name() %>.id, len, str, cut == False ? 0 : 1);
+       if (err < 0) {
+               return err;
+       }
+
+       if (cut != False) {
+               err = cget_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
+               if (err < 0) {
+                       return err;
+               }
+               window-><%= self.name() %>.buf_written = err;
+               return err;
+       }
+
+       return err;
 }
 
 EXPORT W <%= window_name %>_insert<%= self.name() %>text(<%= window_name %>_t *window, TC *str, W len)
 {
-       return cins_txt(window-><%= self.name() %>.id, (PNT){0x8000, 0x8000}, str);
+       W err;
+
+       err = cins_txt(window-><%= self.name() %>.id, (PNT){0x8000, 0x8000}, str);
+       if (err < 0) {
+               return err;
+       }
+
+       err = cget_val(window-><%= self.name() %>.id, <%= self.text_length() %>, (W*)(window-><%= self.name() %>.buf+<%= self.get_attr_offset() %>));
+       if (err < 0) {
+               return err;
+       }
+       window-><%= self.name() %>.buf_written = err;
+
+       return err;
 }
 
 LOCAL VOID <%= window_name %>_action<%= self.name() %>(<%= window_name %>_t *window, WEVENT *wev, <%= main_name %>event_t *evt)