diff options
Diffstat (limited to 'nohtml/filter.cpp')
-rw-r--r-- | nohtml/filter.cpp | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/nohtml/filter.cpp b/nohtml/filter.cpp index 11229cd..5d60445 100644 --- a/nohtml/filter.cpp +++ b/nohtml/filter.cpp @@ -8,26 +8,33 @@ int FilterSendMessage(WPARAM wParam, LPARAM lParam) { char *old_message = (char *)ccs->lParam;
char *buf = 0;
- if(options.html) {
- if(ccs->wParam & PREF_UNICODE) {
- wchar_t *messagew = (wchar_t *)&old_message[strlen(old_message)+1];
- wchar_t* smsg=strip_carrots(messagew);
- wchar_t* html_msg=bbcodes_to_html(smsg);
+ if(ccs->wParam & PREF_UNICODE) {
+ wchar_t *messagew = (wchar_t *)&old_message[strlen(old_message)+1];
+ wchar_t* smsg=strip_carrots(messagew);
+ wchar_t* html_msg;
+ if(options.html) {
+ html_msg=bbcodes_to_html(smsg);
delete[] smsg;
+ } else
+ html_msg = smsg;
- buf=(char *)malloc(wcslen(html_msg)*3+3);
- WideCharToMultiByte( CP_ACP, 0,html_msg, -1,buf,wcslen(html_msg)+1, NULL, NULL);
- memcpy(&buf[strlen(buf)+1],html_msg,lstrlen(buf)*2+2);
- delete[] html_msg;
- } else {
- char* smsg=strip_carrots(old_message);
- char* html_msg=bbcodes_to_html(smsg);
+ buf=(char *)malloc(wcslen(html_msg)*3+3);
+ WideCharToMultiByte( CP_ACP, 0,html_msg, -1,buf,wcslen(html_msg)+1, NULL, NULL);
+ memcpy(&buf[strlen(buf)+1],html_msg,lstrlen(buf)*2+2);
+ delete[] html_msg;
+ } else {
+ char* smsg=strip_carrots(old_message);
+ char* html_msg;
+ if(options.html) {
+ html_msg=bbcodes_to_html(smsg);
delete[] smsg;
- buf = strdup(html_msg);
- delete[] html_msg;
- }
- ccs->lParam = (LPARAM)buf;
+ } else
+ html_msg = smsg;
+
+ buf = strdup(html_msg);
+ delete[] html_msg;
}
+ ccs->lParam = (LPARAM)buf;
int ret = CallService(MS_PROTO_CHAINSEND, wParam, lParam);
ccs->lParam = (LPARAM)old_message;
|