View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update | 
|---|---|---|---|---|---|
| 0000602 | LDMud 3.3 | Efuns | public | 2009-01-17 17:13 | 2009-04-14 12:11 | 
| Reporter | wedsall | Assigned To | zesstra | ||
| Priority | normal | Severity | major | Reproducibility | always | 
| Status | resolved | Resolution | fixed | ||
| Product Version | 3.3.718 | ||||
| Target Version | 3.3.719 | Fixed in Version | 3.3.719 | ||
| Summary | 0000602: db_conv_string bugging over 27 characters | ||||
| Description | Hello list, I'm about to log this into mantis but wanted to post also. In 3.3.717 I started using the mysql features of ldmud. They've been working well until I upgraded to 3.3.718. This reboot (using 3.3.718 now) I'm getting bugs with db_conv_string returning strange ascii characters. Example: db_conv_string("domains/areas/apollo/floor1/entr_castle") LPC result: " "D Ô Ô I will also attach a screenshot. This seems to happen on any string I use over 27 characters! lpc db_conv_string("testtesttesttesttesttesttesttesttesttest") LPC result: ""DP „µ• testtesttesttesttesttesttesttest" uuga @ dragonfire | ||||
| Tags | No tags attached. | ||||
| Attached Files |  pkg-mysql.diff (781 bytes)   
 Index: pkg-mysql.c
===================================================================
--- pkg-mysql.c	(Revision 2502)
+++ pkg-mysql.c	(Arbeitskopie)
@@ -377,7 +377,8 @@
     char *buff;
 
     s = sp->u.str;
-    buff = xalloc(mstrsize(s)*2 +1);
+    buff = xalloc_with_error_handler(mstrsize(s)*2 +1);
+    // top of stack / inter_sp is now one larger than sp!
     if ( !buff )
     {
         errorf("Out of memory (%zu bytes) in db_conv_string().\n",
@@ -387,9 +388,11 @@
     }
     mysql_escape_string(buff, get_txt(s), strlen(get_txt(s)) );
     
-    xfree(buff);
     free_string_svalue(sp);
     put_c_string(sp, buff);
+    // the error handler is one above sp on the stack.
+    pop_stack();
+    // sp == inter_sp again.
     return sp;
 } /* f_db_conv_string() */
 
 | ||||
|  | Thanks for your report. Gna. I guess, I found the problem. Could you please try the attached patch and confirm if it works? | 
|  | Trying this on my dev side. Before patch: lpc db_conv_string("testytestytestytestytestytestytestytesty") LPC result: "¼¢ø> After patch:> lpc db_conv_string("testytestytestytestytestytestytestytesty") LPC result: "testytestytestytestytestytestytestytesty" Looks good! | 
|  | can confirm bug and solution. fast work, zeestra. | 
|  | BTW: the patch from last night was only the quick (and dirty) solution. In rare circumstances it can result in memory leaks. I updated it to use an error handler. Fixed in r2506. | 
| Date Modified | Username | Field | Change | 
|---|---|---|---|
| 2009-01-17 17:13 | wedsall | New Issue | |
| 2009-01-17 17:13 | wedsall | File Added: example_uugabug.png | |
| 2009-01-17 17:24 | zesstra | Note Added: 0000923 | |
| 2009-01-17 17:24 | zesstra | File Added: pkg-mysql.diff | |
| 2009-01-17 18:43 | wedsall | Note Added: 0000925 | |
| 2009-01-17 18:46 | peng | Note Added: 0000926 | |
| 2009-01-18 03:06 | zesstra | Assigned To | => zesstra | 
| 2009-01-18 03:06 | zesstra | Status | new => assigned | 
| 2009-01-18 03:06 | zesstra | Target Version | => 3.3.719 | 
| 2009-01-18 06:49 | zesstra | File Deleted: pkg-mysql.diff | |
| 2009-01-18 06:49 | zesstra | File Added: pkg-mysql.diff | |
| 2009-01-18 06:59 | zesstra | Note Added: 0000927 | |
| 2009-01-18 06:59 | zesstra | Status | assigned => resolved | 
| 2009-01-18 06:59 | zesstra | Fixed in Version | => 3.3.719 | 
| 2009-01-18 06:59 | zesstra | Resolution | open => fixed | 
| 2009-04-14 12:11 | zesstra | Project | LDMud => LDMud 3.3 | 
