diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index cd3c567718c..c289867b85e 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -3925,9 +3925,9 @@ static my_bool read_prepare_result(MYSQL_STMT *stmt) DBUG_RETURN(1); pos= (uchar*) mysql->net.read_pos; - stmt->stmt_id= uint4korr(pos); pos+=4; - field_count= uint2korr(pos); pos+=2; - param_count= uint2korr(pos); pos+=2; + stmt->stmt_id= uint4korr(pos+1); pos+= 5; + field_count= uint2korr(pos); pos+= 2; + param_count= uint2korr(pos); pos+= 2; if (field_count != 0) { diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index c3e84849431..95ac57013da 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -145,10 +145,11 @@ void free_prep_stmt(PREP_STMT *stmt, TREE_FREE mode, void *not_used) static bool send_prep_stmt(PREP_STMT *stmt, uint columns) { NET *net=&stmt->thd->net; - char buff[8]; - int4store(buff, stmt->stmt_id); - int2store(buff+4, columns); - int2store(buff+6, stmt->param_count); + char buff[9]; + buff[0]= 0; + int4store(buff+1, stmt->stmt_id); + int2store(buff+5, columns); + int2store(buff+7, stmt->param_count); #ifndef EMBEDDED_LIBRARY /* This should be fixed to work with prepared statements */