Subject: bug#24776: smerge-mode: smerge-swap doesn't swap hunk badges

From: Aleksey Midenkov <[email-masked]>
Date: Sun, 23 Oct 2016 21:57:08 +0700

### Original:
```c++
<<<<<<< cbfd48f66c91c6f608359dd73d7c82d4793e95e6

/** Update the record for space_id in SYS_TABLESPACES to this filepath.
@param[in]      space_id        Tablespace ID
@param[in]      filepath        Tablespace filepath
@return DB_SUCCESS if OK, dberr_t if the insert failed */
=======
/********************************************************************//**
This function parses a SYS_VTQ record, extracts necessary
information from the record and returns it to the caller.
@return error message, or NULL on success */
UNIV_INTERN
const char*
dict_process_sys_vtq(
/*=======================*/
mem_heap_t*     heap,           /*!< in/out: heap memory */
const rec_t*    rec,            /*!< in: current rec */
ullong*         col_trx_id,     /*!< out: field values */
ullong*         col_begin_ts,
ullong*         col_commit_ts,
ullong*         col_concurr_trx);
/********************************************************************//**
Get the filepath for a spaceid from SYS_DATAFILES. This function provides
a temporary heap which is used for the table lookup, but not for the path.
The caller must free the memory for the path returned. This function can
return NULL if the space ID is not found in SYS_DATAFILES, then the caller
will assume that the ibd file is in the normal datadir.
@return own: A copy of the first datafile found in SYS_DATAFILES.PATH for
the given space ID. NULL if space ID is zero or not found. */
UNIV_INTERN
char*
dict_get_first_path(
/*================*/
        ulint           space,  /*!< in: space id */
        const char*     name);  /*!< in: tablespace name */
/********************************************************************//**
Update the record for space_id in SYS_TABLESPACES to this filepath.
@return DB_SUCCESS if OK, dberr_t if the insert failed */
UNIV_INTERN
>>>>>>> IB: 0.2 part I
```

### After swap:
```c++
<<<<<<< cbfd48f66c91c6f608359dd73d7c82d4793e95e6
/********************************************************************//**
This function parses a SYS_VTQ record, extracts necessary
information from the record and returns it to the caller.
@return error message, or NULL on success */
UNIV_INTERN
const char*
dict_process_sys_vtq(
/*=======================*/
mem_heap_t*     heap,           /*!< in/out: heap memory */
const rec_t*    rec,            /*!< in: current rec */
ullong*         col_trx_id,     /*!< out: field values */
ullong*         col_begin_ts,
ullong*         col_commit_ts,
ullong*         col_concurr_trx);
/********************************************************************//**
Get the filepath for a spaceid from SYS_DATAFILES. This function provides
a temporary heap which is used for the table lookup, but not for the path.
The caller must free the memory for the path returned. This function can
return NULL if the space ID is not found in SYS_DATAFILES, then the caller
will assume that the ibd file is in the normal datadir.
@return own: A copy of the first datafile found in SYS_DATAFILES.PATH for
the given space ID. NULL if space ID is zero or not found. */
UNIV_INTERN
char*
dict_get_first_path(
/*================*/
        ulint           space,  /*!< in: space id */
        const char*     name);  /*!< in: tablespace name */
/********************************************************************//**
Update the record for space_id in SYS_TABLESPACES to this filepath.
@return DB_SUCCESS if OK, dberr_t if the insert failed */
UNIV_INTERN
=======

/** Update the record for space_id in SYS_TABLESPACES to this filepath.
@param[in]      space_id        Tablespace ID
@param[in]      filepath        Tablespace filepath
@return DB_SUCCESS if OK, dberr_t if the insert failed */
>>>>>>> IB: 0.2 part I
```

### Expected:
```c++
<<<<<<< IB: 0.2 part I
/********************************************************************//**
This function parses a SYS_VTQ record, extracts necessary
information from the record and returns it to the caller.
@return error message, or NULL on success */
UNIV_INTERN
const char*
dict_process_sys_vtq(
/*=======================*/
mem_heap_t*     heap,           /*!< in/out: heap memory */
const rec_t*    rec,            /*!< in: current rec */
ullong*         col_trx_id,     /*!< out: field values */
ullong*         col_begin_ts,
ullong*         col_commit_ts,
ullong*         col_concurr_trx);
/********************************************************************//**
Get the filepath for a spaceid from SYS_DATAFILES. This function provides
a temporary heap which is used for the table lookup, but not for the path.
The caller must free the memory for the path returned. This function can
return NULL if the space ID is not found in SYS_DATAFILES, then the caller
will assume that the ibd file is in the normal datadir.
@return own: A copy of the first datafile found in SYS_DATAFILES.PATH for
the given space ID. NULL if space ID is zero or not found. */
UNIV_INTERN
char*
dict_get_first_path(
/*================*/
        ulint           space,  /*!< in: space id */
        const char*     name);  /*!< in: tablespace name */
/********************************************************************//**
Update the record for space_id in SYS_TABLESPACES to this filepath.
@return DB_SUCCESS if OK, dberr_t if the insert failed */
UNIV_INTERN
=======

/** Update the record for space_id in SYS_TABLESPACES to this filepath.
@param[in]      space_id        Tablespace ID
@param[in]      filepath        Tablespace filepath
@return DB_SUCCESS if OK, dberr_t if the insert failed */
>>>>>>> cbfd48f66c91c6f608359dd73d7c82d4793e95e6
```