Once again, mysql can't manage to ship a mysql-connector-odbc release
on time ... mysql 5.5 changed the my_free() function and the released
connector version is not up to speed.  Can't use NEAR anymore, either.


diff -Naur mysql-connector-odbc-5.1.8.orig/driver/catalog.c mysql-connector-odbc-5.1.8/driver/catalog.c
--- mysql-connector-odbc-5.1.8.orig/driver/catalog.c	2010-10-28 14:33:18.000000000 -0400
+++ mysql-connector-odbc-5.1.8/driver/catalog.c	2010-12-23 17:50:52.916552525 -0500
@@ -94,11 +94,11 @@
   {
     if (stmt->result)
     {
-      my_free((char *)stmt->result, MYF(0));
+      my_free((char *)stmt->result);
     }
     if (stmt->result_array)
     {
-      my_free((char *)stmt->result_array, MYF(0));
+      my_free((char *)stmt->result_array);
     }
     set_mem_error(&stmt->dbc->mysql);
     return handle_connection_error(stmt);
diff -Naur mysql-connector-odbc-5.1.8.orig/driver/catalog_no_i_s.c mysql-connector-odbc-5.1.8/driver/catalog_no_i_s.c
--- mysql-connector-odbc-5.1.8.orig/driver/catalog_no_i_s.c	2010-10-28 14:33:18.000000000 -0400
+++ mysql-connector-odbc-5.1.8/driver/catalog_no_i_s.c	2010-12-23 17:51:41.493551970 -0500
@@ -269,13 +269,13 @@
     pthread_mutex_lock(&dbc->lock);
     if (mysql_query(mysql, select))
     {
-      my_free(select, MYF(0));
+      my_free(select);
       pthread_mutex_unlock(&dbc->lock);
       return NULL;
     }
     result= mysql_store_result(&dbc->mysql);
     pthread_mutex_unlock(&dbc->lock);
-    my_free(select, MYF(0));
+    my_free(select);
 
     return result;
   }
@@ -1094,7 +1094,7 @@
                                            SQLFORE_KEYS_FIELDS *
                                            row_count,
                                            MYF(0));
-  my_free((char *)tempdata, MYF(0));
+  my_free((char *)tempdata);
 
   if (!stmt->result_array)
   {
@@ -1323,12 +1323,12 @@
          && (j != mypcREMARKS)
          && (j != mypcCOLUMN_DEF)
          && (j != mypcIS_NULLABLE))
-          my_free(((char**)cur_params->data)[j], MYF(0));
+          my_free(((char**)cur_params->data)[j]);
       }
       /* cleanup the list */
       params= list_delete_forward(params);
-      my_free(cur_params->data, MYF(0));
-      my_free(cur_params, MYF(0));
+      my_free(cur_params->data);
+      my_free(cur_params);
     }
   }
 }
@@ -1675,7 +1675,7 @@
   }
 
   dynstr_free(&dynQuery);
-  my_free(params_r, MYF(0));
+  my_free(params_r);
 
   return nReturn;
 }
diff -Naur mysql-connector-odbc-5.1.8.orig/driver/desc.c mysql-connector-odbc-5.1.8/driver/desc.c
--- mysql-connector-odbc-5.1.8.orig/driver/desc.c	2010-10-28 14:33:18.000000000 -0400
+++ mysql-connector-odbc-5.1.8/driver/desc.c	2010-12-23 17:51:06.532607921 -0500
@@ -65,7 +65,7 @@
   */
   if (my_init_dynamic_array(&desc->records, sizeof(DESCREC), 0, 0))
   {
-    my_free((char *)desc, MYF(0));
+    my_free((char *)desc);
     return NULL;
   }
   desc->desc_type= desc_type;
@@ -111,7 +111,7 @@
     if (aprec->par.alloced)
     {
       aprec->par.alloced= FALSE;
-      my_free(aprec->par.value, MYF(0));
+      my_free(aprec->par.value);
     }
   }
 }
diff -Naur mysql-connector-odbc-5.1.8.orig/driver/driver.h mysql-connector-odbc-5.1.8/driver/driver.h
--- mysql-connector-odbc-5.1.8.orig/driver/driver.h	2010-10-28 14:33:18.000000000 -0400
+++ mysql-connector-odbc-5.1.8/driver/driver.h	2010-12-23 17:50:43.017608761 -0500
@@ -113,7 +113,7 @@
 /* Max Primary keys in a cursor * WHERE clause */
 #define MY_MAX_PK_PARTS 32
 
-#define x_free(A) { void *tmp= (A); if (tmp) my_free((char *) tmp,MYF(MY_WME+MY_FAE)); }
+#define x_free(A) { void *tmp= (A); if (tmp) my_free((char *) tmp); }
 
 
 /* We don't make any assumption about what the default may be. */
diff -Naur mysql-connector-odbc-5.1.8.orig/driver/execute.c mysql-connector-odbc-5.1.8/driver/execute.c
--- mysql-connector-odbc-5.1.8.orig/driver/execute.c	2010-10-28 14:33:18.000000000 -0400
+++ mysql-connector-odbc-5.1.8/driver/execute.c	2010-12-23 17:49:52.799552481 -0500
@@ -96,7 +96,7 @@
     exit:
     pthread_mutex_unlock(&stmt->dbc->lock);
     if ( query != stmt->query )
-        my_free(query,MYF(0));
+        my_free(query);
 
     /*
       If the original query was modified, we reset stmt->query so that the
@@ -104,7 +104,7 @@
     */
     if (stmt->orig_query)
     {
-        my_free(stmt->query,MYF(0));
+        my_free(stmt->query);
         stmt->query= stmt->orig_query;
         stmt->query_end= stmt->orig_query_end;
         stmt->orig_query= NULL;
@@ -625,7 +625,7 @@
 
 out:
     if (free_data)
-      my_free(data, MYF(0));
+      my_free(data);
 
     *toptr= to;
     return SQL_SUCCESS;
@@ -1060,7 +1060,7 @@
     if ( cbValue == SQL_NULL_DATA )
     {
         if ( aprec->par.alloced )
-            my_free(aprec->par.value,MYF(0));
+            my_free(aprec->par.value);
         aprec->par.alloced= FALSE;
         aprec->par.value= NULL;
         return SQL_SUCCESS;
diff -Naur mysql-connector-odbc-5.1.8.orig/driver/handle.c mysql-connector-odbc-5.1.8/driver/handle.c
--- mysql-connector-odbc-5.1.8.orig/driver/handle.c	2010-10-28 14:33:18.000000000 -0400
+++ mysql-connector-odbc-5.1.8/driver/handle.c	2010-12-23 17:50:17.425586339 -0500
@@ -112,7 +112,7 @@
     GlobalUnlock(GlobalHandle((HGLOBAL) henv));
     GlobalFree(GlobalHandle((HGLOBAL) henv));
 #else
-    if (henv) my_free((char*) henv,MYF(0));
+    if (henv) my_free((char*) henv);
     myodbc_end();
 #endif /* _UNIX_ */
     return(SQL_SUCCESS);
@@ -251,7 +251,8 @@
     LIST *next;
 
     dbc->env->connections= list_delete(dbc->env->connections,&dbc->list);
-    my_free(dbc->database,MYF(MY_ALLOW_ZERO_PTR));
+    if (dbc->database)
+      my_free(dbc->database);
     if (dbc->ds)
       ds_delete(dbc->ds);
     pthread_mutex_destroy(&dbc->lock);
@@ -268,7 +269,7 @@
     GlobalUnlock(GlobalHandle((HGLOBAL) hdbc));
     GlobalFree(GlobalHandle((HGLOBAL) hdbc));
 #else
-    my_free((char*) hdbc,MYF(0));
+    my_free((char*) hdbc);
 #endif
     return SQL_SUCCESS;
 }
@@ -513,7 +514,7 @@
     GlobalUnlock(GlobalHandle ((HGLOBAL) hstmt));
     GlobalFree(GlobalHandle((HGLOBAL) hstmt));
 #else
-    my_free((char*) hstmt,MYF(0));
+    my_free((char*) hstmt);
 #endif /* _UNIX_*/
     return SQL_SUCCESS;
 }
diff -Naur mysql-connector-odbc-5.1.8.orig/driver/options.c mysql-connector-odbc-5.1.8/driver/options.c
--- mysql-connector-odbc-5.1.8.orig/driver/options.c	2010-10-28 14:33:18.000000000 -0400
+++ mysql-connector-odbc-5.1.8/driver/options.c	2010-12-23 17:50:28.864604596 -0500
@@ -301,7 +301,7 @@
                         return SQL_ERROR;
                     }
                 }
-                my_free(dbc->database,MYF(0));
+                my_free(dbc->database);
                 dbc->database= my_strdup(db,MYF(MY_WME));
                 pthread_mutex_unlock(&dbc->lock);
             }
diff -Naur mysql-connector-odbc-5.1.8.orig/driver/prepare.c mysql-connector-odbc-5.1.8/driver/prepare.c
--- mysql-connector-odbc-5.1.8.orig/driver/prepare.c	2010-10-28 14:33:18.000000000 -0400
+++ mysql-connector-odbc-5.1.8/driver/prepare.c	2010-12-23 17:51:17.175676805 -0500
@@ -93,7 +93,7 @@
   CLEAR_STMT_ERROR(stmt);
 
   if (stmt->query)
-    my_free(stmt->query, MYF(0));
+    my_free(stmt->query);
 
   if (dupe && szSqlStr)
     stmt->query= (char *)szSqlStr;
@@ -223,7 +223,7 @@
     {
         aprec->par.alloced= FALSE;
         assert(aprec->par.value);
-        my_free(aprec->par.value,MYF(0));
+        my_free(aprec->par.value);
         aprec->par.value = NULL;
     }
 
diff -Naur mysql-connector-odbc-5.1.8.orig/driver/utility.c mysql-connector-odbc-5.1.8/driver/utility.c
--- mysql-connector-odbc-5.1.8.orig/driver/utility.c	2010-10-28 14:33:18.000000000 -0400
+++ mysql-connector-odbc-5.1.8/driver/utility.c	2010-12-23 17:49:05.498552376 -0500
@@ -930,7 +930,7 @@
     ulong max_length= stmt->stmt_options.max_length;
     ulong *offset= &stmt->getdata.src_offset;
 #if MYSQL_VERSION_ID >= 40100
-    char NEAR _dig_vec[] =
+    char _dig_vec[] =
     "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 #endif
 
@@ -2154,7 +2154,7 @@
 
 my_bool reget_current_catalog(DBC FAR *dbc)
 {
-    my_free(dbc->database,MYF(0));
+    my_free(dbc->database);
     dbc->database= NULL;
 
     if ( odbc_stmt(dbc, "select database()") )
diff -Naur mysql-connector-odbc-5.1.8.orig/util/stringutil.h mysql-connector-odbc-5.1.8/util/stringutil.h
--- mysql-connector-odbc-5.1.8.orig/util/stringutil.h	2010-10-28 14:33:17.000000000 -0400
+++ mysql-connector-odbc-5.1.8/util/stringutil.h	2010-12-23 17:51:51.848676475 -0500
@@ -41,7 +41,7 @@
 #include <sqlext.h>
 
 #ifndef x_free
-#define x_free(A) { void *tmp= (A); if (tmp) my_free((char *) tmp,MYF(MY_WME+MY_FAE)); }
+#define x_free(A) { void *tmp= (A); if (tmp) my_free((char *) tmp); }
 #endif
 
 #define myodbc_min(a, b) ((a) < (b) ? (a) : (b))
--- mysql-connector-odbc-5.1.8/driver/dll.c	2010-10-28 20:33:18.000000000 +0200
+++ mysql-connector-odbc-5.1.8/driver/dll.c	2011-05-26 23:09:27.768023621 +0200
@@ -96,9 +96,9 @@
 {
   if (!--myodbc_inited)
   {
-    my_free(decimal_point,MYF(0));
-    my_free(default_locale,MYF(0));
-    my_free(thousands_sep,MYF(0));
+    my_free(decimal_point);
+    my_free(default_locale);
+    my_free(thousands_sep);
 
     /* my_thread_end_wait_time was added in 5.1.14 and 5.0.32 */
 #if !defined(NONTHREADSAFE) && \
