|  |  | @ -358,7 +358,10 @@ typedef struct | 
			
		
	
		
		
			
				
					
					|  |  |  | // included just the "header" portion
 |  |  |  | // included just the "header" portion
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #ifdef STB_TEXTEDIT_IMPLEMENTATION |  |  |  | #ifdef STB_TEXTEDIT_IMPLEMENTATION | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #include <string.h> // memmove |  |  |  | #ifndef STBTE_memmove | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #include <string.h> | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #define STBTE_memmove memmove | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #endif | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /////////////////////////////////////////////////////////////////////////////
 |  |  |  | /////////////////////////////////////////////////////////////////////////////
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -1038,13 +1041,13 @@ static void stb_textedit_discard_undo(StbUndoState *state) | 
			
		
	
		
		
			
				
					
					|  |  |  |          int n = state->undo_rec[0].insert_length, i; |  |  |  |          int n = state->undo_rec[0].insert_length, i; | 
			
		
	
		
		
			
				
					
					|  |  |  |          // delete n characters from all other records
 |  |  |  |          // delete n characters from all other records
 | 
			
		
	
		
		
			
				
					
					|  |  |  |          state->undo_char_point = state->undo_char_point - (short) n;  // vsnet05
 |  |  |  |          state->undo_char_point = state->undo_char_point - (short) n;  // vsnet05
 | 
			
		
	
		
		
			
				
					
					|  |  |  |          memmove(state->undo_char, state->undo_char + n, (size_t) (state->undo_char_point*sizeof(STB_TEXTEDIT_CHARTYPE))); |  |  |  |          STBTE_memmove(state->undo_char, state->undo_char + n, (size_t) (state->undo_char_point*sizeof(STB_TEXTEDIT_CHARTYPE))); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |          for (i=0; i < state->undo_point; ++i) |  |  |  |          for (i=0; i < state->undo_point; ++i) | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (state->undo_rec[i].char_storage >= 0) |  |  |  |             if (state->undo_rec[i].char_storage >= 0) | 
			
		
	
		
		
			
				
					
					|  |  |  |                state->undo_rec[i].char_storage = state->undo_rec[i].char_storage - (short) n; // vsnet05 // @OPTIMIZE: get rid of char_storage and infer it
 |  |  |  |                state->undo_rec[i].char_storage = state->undo_rec[i].char_storage - (short) n; // vsnet05 // @OPTIMIZE: get rid of char_storage and infer it
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       } |  |  |  |       } | 
			
		
	
		
		
			
				
					
					|  |  |  |       --state->undo_point; |  |  |  |       --state->undo_point; | 
			
		
	
		
		
			
				
					
					|  |  |  |       memmove(state->undo_rec, state->undo_rec+1, (size_t) (state->undo_point*sizeof(state->undo_rec[0]))); |  |  |  |       STBTE_memmove(state->undo_rec, state->undo_rec+1, (size_t) (state->undo_point*sizeof(state->undo_rec[0]))); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |    } |  |  |  |    } | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -1062,13 +1065,13 @@ static void stb_textedit_discard_redo(StbUndoState *state) | 
			
		
	
		
		
			
				
					
					|  |  |  |          int n = state->undo_rec[k].insert_length, i; |  |  |  |          int n = state->undo_rec[k].insert_length, i; | 
			
		
	
		
		
			
				
					
					|  |  |  |          // delete n characters from all other records
 |  |  |  |          // delete n characters from all other records
 | 
			
		
	
		
		
			
				
					
					|  |  |  |          state->redo_char_point = state->redo_char_point + (short) n; // vsnet05
 |  |  |  |          state->redo_char_point = state->redo_char_point + (short) n; // vsnet05
 | 
			
		
	
		
		
			
				
					
					|  |  |  |          memmove(state->undo_char + state->redo_char_point, state->undo_char + state->redo_char_point-n, (size_t) ((STB_TEXTEDIT_UNDOSTATECOUNT - state->redo_char_point)*sizeof(STB_TEXTEDIT_CHARTYPE))); |  |  |  |          STBTE_memmove(state->undo_char + state->redo_char_point, state->undo_char + state->redo_char_point-n, (size_t) ((STB_TEXTEDIT_UNDOSTATECOUNT - state->redo_char_point)*sizeof(STB_TEXTEDIT_CHARTYPE))); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |          for (i=state->redo_point; i < k; ++i) |  |  |  |          for (i=state->redo_point; i < k; ++i) | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (state->undo_rec[i].char_storage >= 0) |  |  |  |             if (state->undo_rec[i].char_storage >= 0) | 
			
		
	
		
		
			
				
					
					|  |  |  |                state->undo_rec[i].char_storage = state->undo_rec[i].char_storage + (short) n; // vsnet05
 |  |  |  |                state->undo_rec[i].char_storage = state->undo_rec[i].char_storage + (short) n; // vsnet05
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       } |  |  |  |       } | 
			
		
	
		
		
			
				
					
					|  |  |  |       ++state->redo_point; |  |  |  |       ++state->redo_point; | 
			
		
	
		
		
			
				
					
					|  |  |  |       memmove(state->undo_rec + state->redo_point-1, state->undo_rec + state->redo_point, (size_t) ((STB_TEXTEDIT_UNDOSTATECOUNT - state->redo_point)*sizeof(state->undo_rec[0]))); |  |  |  |       STBTE_memmove(state->undo_rec + state->redo_point-1, state->undo_rec + state->redo_point, (size_t) ((STB_TEXTEDIT_UNDOSTATECOUNT - state->redo_point)*sizeof(state->undo_rec[0]))); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |    } |  |  |  |    } | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |