Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/edit/sheet.c

    rc29f20b r3052ff4  
    5454#include <adt/list.h>
    5555#include <align.h>
    56 #include <macros.h>
    5756
    5857#include "sheet.h"
    5958
    6059enum {
    61         TAB_WIDTH       = 8,
    62 
    63         /** Initial  of dat buffer in bytes */
    64         INITIAL_SIZE    = 32
     60        TAB_WIDTH = 8
    6561};
    6662
     
    6864int sheet_init(sheet_t *sh)
    6965{
    70         sh->dbuf_size = INITIAL_SIZE;
     66        sh->dbuf_size = 65536;
    7167        sh->text_size = 0;
    7268
     
    9995        link_t *link;
    10096        tag_t *tag;
    101         char *newp;
    10297
    10398        sz = str_size(str);
    104         if (sh->text_size + sz > sh->dbuf_size) {
    105                 /* Enlarge data buffer. */
    106                 newp = realloc(sh->data, sh->dbuf_size * 2);
    107                 if (newp == NULL)
    108                         return ELIMIT;
    109 
    110                 sh->data = newp;
    111                 sh->dbuf_size = sh->dbuf_size * 2;
    112         }
     99        if (sh->text_size + sz > sh->dbuf_size)
     100                return ELIMIT;
    113101
    114102        ipp = sh->data + pos->b_off;
    115103
    116         /* Copy data. */
    117104        memmove(ipp + sz, ipp, sh->text_size - pos->b_off);
    118105        memcpy(ipp, str, sz);
    119106        sh->text_size += sz;
    120107
    121         /* Adjust tags. */
     108        /* Adjust tags */
    122109
    123110        link = sh->tags_head.next;
     
    152139        link_t *link;
    153140        tag_t *tag;
    154         char *newp;
    155         size_t shrink_size;
    156141
    157142        spp = sh->data + spos->b_off;
     
    161146        sh->text_size -= sz;
    162147
    163         /* Adjust tags. */
     148        /* Adjust tags */
    164149        link = sh->tags_head.next;
    165150        while (link != &sh->tags_head) {
     
    173158                link = link->next;
    174159        }
    175 
    176         /* See if we should free up some memory. */
    177         shrink_size = max(sh->dbuf_size / 4, INITIAL_SIZE);
    178         if (sh->text_size <= shrink_size && sh->dbuf_size > INITIAL_SIZE) {
    179                 /* Shrink data buffer. */
    180                 newp = realloc(sh->data, shrink_size);
    181                 if (newp == NULL) {
    182                         /* Failed to shrink buffer... no matter. */
    183                         return EOK;
    184                 }
    185 
    186                 sh->data = newp;
    187                 sh->dbuf_size = shrink_size;
    188         }
    189 
     160       
    190161        return EOK;
    191162}
Note: See TracChangeset for help on using the changeset viewer.