@@ -141,7 +141,7 @@ void *client_handler(void *sock_fd) {
141141 // 接收客户端发送的请求
142142 char data_recv[BUFFER_LENGTH];
143143 // 需要返回给客户端的结果
144- char * data_send = new char [BUFFER_LENGTH];
144+ char data_send[BUFFER_LENGTH];
145145 // 需要返回给客户端的结果的长度
146146 int offset = 0 ;
147147 // 记录客户端当前正在执行的事务ID
@@ -155,8 +155,6 @@ void *client_handler(void *sock_fd) {
155155 while (true ) {
156156 Print<true >(" Waiting for request...\n " );
157157
158- // memset(data_recv, 0, BUFFER_LENGTH);
159-
160158 i_recvBytes = recv (fd, data_recv, BUFFER_LENGTH, 0 );
161159 data_recv[i_recvBytes] = ' \0 ' ;
162160
@@ -185,7 +183,6 @@ void *client_handler(void *sock_fd) {
185183#ifdef ENABLE_SERIALIZE
186184 pthread_mutex_lock (sql_mutex);
187185#endif
188- memset (data_send, ' \0 ' , BUFFER_LENGTH);
189186 offset = 0 ;
190187
191188 // 开启事务,初始化系统所需的上下文信息(包括事务对象指针、锁管理器指针、日志管理器指针、存放结果的buffer、记录结果长度的变量)
@@ -206,10 +203,9 @@ void *client_handler(void *sock_fd) {
206203 portal.run (portalStmt, &txn_id, context.get ());
207204 portal.drop ();
208205 } catch (TransactionAbortException &e) {
209- std::string str = " abort\n " ;
210- memcpy (data_send, str.c_str (), str.length ());
211- data_send[str.length ()] = ' \0 ' ;
212- offset = str.length ();
206+ memcpy (data_send, " abort\n " , 6 );
207+ data_send[6 ] = ' \0 ' ;
208+ offset = 6 ;
213209
214210 // 回滚事务
215211 txn_manager.abort (context.get ());
@@ -222,7 +218,7 @@ void *client_handler(void *sock_fd) {
222218 if (sm_manager.is_output_file_ ) {
223219 std::fstream outfile;
224220 outfile.open (" output.txt" , std::ios::out | std::ios::app);
225- outfile << str ;
221+ outfile << " abort \n " ;
226222 outfile.close ();
227223 }
228224 } catch (RMDBError &e) {
@@ -286,8 +282,6 @@ void *client_handler(void *sock_fd) {
286282#endif
287283 }
288284
289- delete[] data_send; // 释放动态分配的内存
290-
291285 yylex_destroy (scanner); // 销毁扫描器
292286
293287 // Clear
0 commit comments