diff options
Diffstat (limited to 'options.cpp')
-rw-r--r-- | options.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/options.cpp b/options.cpp index 00b4b7e..72a0b77 100644 --- a/options.cpp +++ b/options.cpp @@ -330,8 +330,6 @@ static BOOL CALLBACK DlgProcGpgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA { break; } - wfstream f(tmp, std::ios::out); - delete [] tmp; wstring str; { TCHAR *tmp = UniGetContactSettingUtf(user_data[item_num+1], szGPGModuleName, "GPGPubKey", _T("")); @@ -343,6 +341,8 @@ static BOOL CALLBACK DlgProcGpgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA { str.erase(s, 1); } + wfstream f(tmp, std::ios::out); + delete [] tmp; f<<str.c_str(); f.close(); } @@ -1032,19 +1032,21 @@ static BOOL CALLBACK DlgProcLoadPublicKey(HWND hwndDlg,UINT msg,WPARAM wParam,LP { break; } - wfstream f(tmp, std::ios::in); + wfstream f(tmp, std::ios::in | std::ios::ate); delete [] tmp; if(!f.is_open()) { MessageBox(0, _T("Failed to open file"), _T("Error"), MB_OK); break; } - while(!f.eof() && f.is_open()) + if(f.is_open()) { - tmp = new TCHAR [1024]; - f.getline(tmp, 1024, '\n'); + std::ifstream::pos_type size = f.tellg(); + TCHAR *tmp = new TCHAR [(std::ifstream::pos_type)size+(std::ifstream::pos_type)1]; + f.seekg(0, std::ios::beg); + f.read(tmp, size); + tmp[size]= '\0'; key_buf.append(tmp); - key_buf.append(_T("\n")); delete [] tmp; } f.close(); |