Index: link.install
===================================================================
RCS file: /cvs/drupal/contributions/modules/link/link.install,v
retrieving revision 1.5.2.6
diff -u -r1.5.2.6 link.install
--- link.install	20 Apr 2009 04:09:18 -0000	1.5.2.6
+++ link.install	14 Jun 2009 18:07:05 -0000
@@ -86,3 +86,32 @@
   
   return $ret;
 }
+
+function link_update_6200() {
+  $ret = array();
+  
+  // Build a list of fields that need updating.
+  $update_fields = array();
+  foreach (content_types_install() as $type_name => $fields) {
+    foreach ($fields as $field) {
+      if ($field['type'] == 'link') {
+        // We only process a given field once.
+        $update_fields[$field['field_name']] = $field;
+      }
+    }
+  }
+  
+  // Update each field's storage to match the current definition.
+  foreach ($update_fields as $field) {
+    $db_info = content_database_info($field);
+    foreach ($db_info['columns'] as $column) {
+      if ($column['column'] == $field['field_name'] .'_url') {
+        $column['length'] = 2048;
+        db_change_field($ret, $db_info['table'], $column['column'], $column['column'], $column);
+      }
+    }
+  }
+  
+  // Let CCK re-associate link fields with Link module and activate the fields.
+  content_associate_fields('link');
+  
+  return $ret;
+}
Index: link.module
===================================================================
RCS file: /cvs/drupal/contributions/modules/link/link.module,v
retrieving revision 1.24.2.35
diff -u -r1.24.2.35 link.module
--- link.module	20 Apr 2009 04:09:18 -0000	1.24.2.35
+++ link.module	14 Jun 2009 18:07:06 -0000
@@ -13,6 +13,11 @@
 define('LINK_DOMAINS', 'aero|arpa|asia|biz|com|cat|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel|mobi|local');
 
 /**
+ * define maximum URL length
+ */
+define('URL_MAX_LENGTH', 2048);
+
+/**
  * Implementation of hook_field_info().
  */
 function link_field_info() {
@@ -139,7 +144,7 @@
 
     case 'database columns':
       return array(
-        'url' => array('type' => 'varchar', 'length' => 255, 'not null' => FALSE, 'sortable' => TRUE),
+        'url' => array('type' => 'varchar', 'length' => URL_MAX_LENGTH, 'not null' => FALSE, 'sortable' => TRUE),
         'title' => array('type' => 'varchar', 'length' => 255, 'not null' => FALSE, 'sortable' => TRUE),
         'attributes' => array('type' => 'text', 'size' => 'medium', 'not null' => FALSE),
       );
@@ -461,11 +466,12 @@
  * The $fields array is in $form['#field_info'][$element['#field_name']].
  */
 function link_process($element, $edit, $form_state, $form) {
+  $url_max_length = sprintf('%d', URL_MAX_LENGTH);
    $field = $form['#field_info'][$element['#field_name']];
    $delta = $element['#delta'];
    $element['url'] = array(
      '#type' => 'textfield',
-     '#maxlength' => '255',
+     '#maxlength' => $url_max_length,
      '#title' => t('URL'),
      '#description' => $element['#description'],
      '#required' => ($delta == 0 && $field['url'] !== 'optional') ? $element['#required'] : FALSE,
