svnno****@sourc*****
svnno****@sourc*****
2011年 6月 11日 (土) 00:10:49 JST
Revision: 4493 http://sourceforge.jp/projects/ttssh2/svn/view?view=rev&revision=4493 Author: yutakapon Date: 2011-06-11 00:10:49 +0900 (Sat, 11 Jun 2011) Log Message: ----------- å§ç¸®ä»ãã§SCPéä¿¡ãè¡ãã¨ãBOFã§è½ã¡ããããworkaroundã¨ãã¦ã å§ç¸®ã®å ´åã¯ãããã¡ãµã¤ãºãå°ããããã FIXME: æ ¹æ¬å¦ç½®ã§ã¯ãªãã®ã§ãç°å¢ã«ãã£ã¦ã¯ããã¯ãè½ã¡ããããããªãã Modified Paths: -------------- trunk/ttssh2/ttxssh/ssh.c -------------- next part -------------- Modified: trunk/ttssh2/ttxssh/ssh.c =================================================================== --- trunk/ttssh2/ttxssh/ssh.c 2011-06-09 15:25:43 UTC (rev 4492) +++ trunk/ttssh2/ttxssh/ssh.c 2011-06-10 15:10:49 UTC (rev 4493) @@ -7522,7 +7522,8 @@ Channel_t *c = (Channel_t *)p; PTInstVar pvar = c->scp.pvar; long long total_size = 0; - char buf[8192]; + char *buf = NULL; + size_t buflen; char s[80]; size_t ret; HWND hWnd = c->scp.progress_window; @@ -7531,6 +7532,16 @@ DWORD stime; int elapsed, prev_elapsed; + // ³kt«ÅSCPMðs¤ÆABOFÅ¿é½ßAworkaroundƵÄA + // ³kÌêÍobt@TCY𬳷éB + // (2011.6.11 yutaka) + if (pvar->ts_SSH->CompressionLevel == 0) { + buflen = 8192; + } else { + buflen = 1024; + } + buf = malloc(buflen); + //SendMessage(GetDlgItem(hWnd, IDC_FILENAME), WM_SETTEXT, 0, (LPARAM)c->scp.localfile); SendMessage(GetDlgItem(hWnd, IDC_FILENAME), WM_SETTEXT, 0, (LPARAM)c->scp.localfilefull); @@ -7545,7 +7556,7 @@ goto cancel_abort; // t@C©çÇÝñ¾f[^Í©Èç¸T[oÖM·éB - ret = fread(buf, 1, sizeof(buf), c->scp.localfp); + ret = fread(buf, 1, buflen, c->scp.localfp); if (ret == 0) break; @@ -7598,7 +7609,7 @@ prev_elapsed = elapsed; } - } while (ret <= sizeof(buf)); + } while (ret <= buflen); // eof c->scp.state = SCP_DATA; @@ -7612,6 +7623,8 @@ ShowWindow(hWnd, SW_HIDE); + free(buf); + return 0; cancel_abort: @@ -7624,6 +7637,8 @@ abort: + free(buf); + return 0; }